def main(argv=sys.argv):
    """Entry point for starting an HTTP git server."""
    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-l",
                      "--listen_address",
                      dest="listen_address",
                      default="localhost",
                      help="Binding IP address.")
    parser.add_option("-p",
                      "--port",
                      dest="port",
                      type=int,
                      default=8000,
                      help="Port to listen on.")
    options, args = parser.parse_args(argv)

    if len(args) > 1:
        gitdir = args[1]
    else:
        gitdir = os.getcwd()

    log_utils.default_logging_config()
    backend = DictBackend({'/': Repo(gitdir)})
    app = make_wsgi_chain(backend)
    server = make_server(options.listen_address,
                         options.port,
                         app,
                         handler_class=WSGIRequestHandlerLogger,
                         server_class=WSGIServerLogger)
    logger.info('Listening for HTTP connections on %s:%d',
                options.listen_address, options.port)
    server.serve_forever()
Exemplo n.º 2
0
    def test_get_info_packs(self):
        class TestPackData(object):
            def __init__(self, sha):
                self.filename = "pack-%s.pack" % sha

        class TestPack(object):
            def __init__(self, sha):
                self.data = TestPackData(sha)

        packs = [TestPack(str(i) * 40) for i in range(1, 4)]

        class TestObjectStore(MemoryObjectStore):
            # property must be overridden, can't be assigned
            @property
            def packs(self):
                return packs

        store = TestObjectStore()
        repo = BaseRepo(store, None)
        backend = DictBackend({'/': repo})
        mat = re.search('.*', '//info/packs')
        output = b''.join(get_info_packs(self._req, backend, mat))
        expected = b''.join([(b'P pack-' + s + b'.pack\n')
                             for s in [b'1' * 40, b'2' * 40, b'3' * 40]])
        self.assertEqual(expected, output)
        self.assertEqual(HTTP_OK, self._status)
        self.assertContentTypeEquals('text/plain')
        self.assertFalse(self._req.cached)
Exemplo n.º 3
0
 def setUp(self):
     super(ProtocolGraphWalkerEmptyTestCase, self).setUp()
     self._repo = MemoryRepo.init_bare([], {})
     backend = DictBackend({b'/': self._repo})
     self._walker = _ProtocolGraphWalker(
         TestUploadPackHandler(backend, [b'/', b'host=lolcats'],
                               TestProto()), self._repo.object_store,
         self._repo.get_peeled, self._repo.refs.get_symrefs)
Exemplo n.º 4
0
def _test_backend(objects, refs=None, named_files=None):
    if not refs:
        refs = {}
    if not named_files:
        named_files = {}
    repo = MemoryRepo.init_bare(objects, refs)
    for path, contents in named_files.items():
        repo._put_named_file(path, contents)
    return DictBackend({'/': repo})
Exemplo n.º 5
0
 def _start_server(self, repo):
     backend = DictBackend({'/': repo})
     app = self._make_app(backend)
     dul_server = simple_server.make_server(
       'localhost', 0, app, server_class=WSGIServerLogger,
       handler_class=WSGIRequestHandlerLogger)
     self.addCleanup(dul_server.shutdown)
     self.addCleanup(dul_server.server_close)
     threading.Thread(target=dul_server.serve_forever).start()
     self._server = dul_server
     _, port = dul_server.socket.getsockname()
     return port
Exemplo n.º 6
0
 def setUp(self):
     super(ProtocolGraphWalkerTestCase, self).setUp()
     # Create the following commit tree:
     #   3---5
     #  /
     # 1---2---4
     commits = [
         make_commit(id=ONE, parents=[], commit_time=111),
         make_commit(id=TWO, parents=[ONE], commit_time=222),
         make_commit(id=THREE, parents=[ONE], commit_time=333),
         make_commit(id=FOUR, parents=[TWO], commit_time=444),
         make_commit(id=FIVE, parents=[THREE], commit_time=555),
     ]
     self._repo = MemoryRepo.init_bare(commits, {})
     backend = DictBackend({b'/': self._repo})
     self._walker = _ProtocolGraphWalker(
         TestUploadPackHandler(backend, [b'/', b'host=lolcats'],
                               TestProto()), self._repo.object_store,
         self._repo.get_peeled, self._repo.refs.get_symrefs)
Exemplo n.º 7
0
 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())
Exemplo n.º 8
0
 def setUp(self):
     super(ServeCommandTests, self).setUp()
     self.backend = DictBackend({})
Exemplo n.º 9
0
    def test_bad_repo_path(self):
        repo = MemoryRepo.init_bare([], {})
        backend = DictBackend({b'/': repo})

        self.assertRaises(NotGitRepository,
                          lambda: backend.open_repository('/ups'))
Exemplo n.º 10
0
 def test_nonexistant(self):
     repo = MemoryRepo.init_bare([], {})
     backend = DictBackend({b'/': repo})
     self.assertRaises(NotGitRepository, backend.open_repository,
                       "/does/not/exist/unless/foo")