コード例 #1
0
def receive_pack(path=".", inf=sys.stdin, outf=sys.stdout):
    """Receive a pack file after negotiating its contents using smart protocol.

    :param path: Path to the repository
    :param inf: Input stream to communicate with client
    :param outf: Output stream to communicate with client
    """
    backend = FileSystemBackend()
    def send_fn(data):
        outf.write(data)
        outf.flush()
    proto = Protocol(inf.read, send_fn)
    handler = ReceivePackHandler(backend, [path], proto)
    # FIXME: Catch exceptions and write a single-line summary to outf.
    handler.handle()
    return 0
コード例 #2
0
ファイル: porcelain.py プロジェクト: PKRoma/dulwich
def receive_pack(path=".", inf=sys.stdin, outf=sys.stdout):
    """Receive a pack file after negotiating its contents using smart protocol.

    :param path: Path to the repository
    :param inf: Input stream to communicate with client
    :param outf: Output stream to communicate with client
    """
    backend = FileSystemBackend()
    def send_fn(data):
        outf.write(data)
        outf.flush()
    proto = Protocol(inf.read, send_fn)
    handler = ReceivePackHandler(backend, [path], proto)
    # FIXME: Catch exceptions and write a single-line summary to outf.
    handler.handle()
    return 0
コード例 #3
0
ファイル: test_server.py プロジェクト: suliveevil/dulwich
class ReceivePackHandlerTestCase(TestCase):
    def setUp(self):
        super(ReceivePackHandlerTestCase, self).setUp()
        self._repo = MemoryRepo.init_bare([], {})
        backend = DictBackend({b'/': self._repo})
        self._handler = ReceivePackHandler(backend, [b'/', b'host=lolcathost'],
                                           TestProto())

    def test_apply_pack_del_ref(self):
        refs = {b'refs/heads/master': TWO, b'refs/heads/fake-branch': ONE}
        self._repo.refs._update(refs)
        update_refs = [
            [ONE, ZERO_SHA, b'refs/heads/fake-branch'],
        ]
        self._handler.set_client_capabilities([b'delete-refs'])
        status = self._handler._apply_pack(update_refs)
        self.assertEqual(status[0][0], b'unpack')
        self.assertEqual(status[0][1], b'ok')
        self.assertEqual(status[1][0], b'refs/heads/fake-branch')
        self.assertEqual(status[1][1], b'ok')
コード例 #4
0
ファイル: test_server.py プロジェクト: atbradley/dulwich
class ReceivePackHandlerTestCase(TestCase):

    def setUp(self):
        super(ReceivePackHandlerTestCase, self).setUp()
        self._repo = MemoryRepo.init_bare([], {})
        backend = DictBackend({b'/': self._repo})
        self._handler = ReceivePackHandler(
          backend, [b'/', b'host=lolcathost'], TestProto())

    def test_apply_pack_del_ref(self):
        refs = {
            b'refs/heads/master': TWO,
            b'refs/heads/fake-branch': ONE}
        self._repo.refs._update(refs)
        update_refs = [[ONE, ZERO_SHA, b'refs/heads/fake-branch'], ]
        self._handler.set_client_capabilities([b'delete-refs'])
        status = self._handler._apply_pack(update_refs)
        self.assertEqual(status[0][0], b'unpack')
        self.assertEqual(status[0][1], b'ok')
        self.assertEqual(status[1][0], b'refs/heads/fake-branch')
        self.assertEqual(status[1][1], b'ok')
コード例 #5
0
def receive_pack(path=".", inf=None, outf=None):
    """Receive a pack file after negotiating its contents using smart protocol.

    Args:
      path: Path to the repository
      inf: Input stream to communicate with client
      outf: Output stream to communicate with client
    """
    if outf is None:
        outf = getattr(sys.stdout, 'buffer', sys.stdout)
    if inf is None:
        inf = getattr(sys.stdin, 'buffer', sys.stdin)
    path = os.path.expanduser(path)
    backend = FileSystemBackend(path)

    def send_fn(data):
        outf.write(data)
        outf.flush()
    proto = Protocol(inf.read, send_fn)
    handler = ReceivePackHandler(backend, [path], proto)
    # FIXME: Catch exceptions and write a single-line summary to outf.
    handler.handle()
    return 0
コード例 #6
0
ファイル: test_server.py プロジェクト: jaraco/dulwich
class ReceivePackHandlerTestCase(TestCase):
    def setUp(self):
        super(ReceivePackHandlerTestCase, self).setUp()
        self._repo = MemoryRepo.init_bare([], {})
        backend = DictBackend({"/": self._repo})
        self._handler = ReceivePackHandler(backend, ["/", "host=lolcathost"], TestProto())

    def test_apply_pack_del_ref(self):
        refs = {"refs/heads/master": TWO, "refs/heads/fake-branch": ONE}
        self._repo.refs._update(refs)
        update_refs = [[ONE, ZERO_SHA, "refs/heads/fake-branch"]]
        status = self._handler._apply_pack(update_refs)
        self.assertEqual(status[0][0], "unpack")
        self.assertEqual(status[0][1], "ok")
        self.assertEqual(status[1][0], "refs/heads/fake-branch")
        self.assertEqual(status[1][1], "ok")
コード例 #7
0
ファイル: test_server.py プロジェクト: ardumont/dulwich
 def setUp(self):
     super(ReceivePackHandlerTestCase, self).setUp()
     self._repo = MemoryRepo.init_bare([], {})
     backend = DictBackend({b'/': self._repo})
     self._handler = ReceivePackHandler(
       backend, [b'/', b'host=lolcathost'], TestProto())
コード例 #8
0
ファイル: server_utils.py プロジェクト: ChipJust/dulwich
 def capabilities(cls):
     return tuple(c for c in ReceivePackHandler.capabilities()
                  if c != 'side-band-64k')
コード例 #9
0
 def capabilities(cls):
     return tuple(c for c in ReceivePackHandler.capabilities()
                  if c != b'side-band-64k')
コード例 #10
0
 def setUp(self):
     super(ReceivePackHandlerTestCase, self).setUp()
     self._repo = MemoryRepo.init_bare([], {})
     backend = DictBackend({'/': self._repo})
     self._handler = ReceivePackHandler(backend, ['/', 'host=lolcathost'],
                                        TestProto())
コード例 #11
0
 def capabilities(cls):
     return [
         c
         for c in ReceivePackHandler.capabilities()
         if c != CAPABILITY_SIDE_BAND_64K
     ]
コード例 #12
0
ファイル: server_utils.py プロジェクト: atbradley/dulwich
 def capabilities(cls):
     return [c for c in ReceivePackHandler.capabilities()
             if c != CAPABILITY_SIDE_BAND_64K]