예제 #1
0
def main(argv=sys.argv):
    """Entry point for starting a TCP 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=TCP_GIT_PORT,
                      help="Binding TCP port.")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if len(args) > 1:
        gitdir = args[1]
    else:
        gitdir = '.'
    # TODO(jelmer): Support git-daemon-export-ok and --export-all.
    backend = FileSystemBackend(gitdir)
    server = TCPGitServer(backend, options.listen_address, options.port)
    server.serve_forever()
예제 #2
0
def cmd_daemon(args):
    """Entry point for starting a TCP git server."""
    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-l", "--listen_address", dest="listen_address",
                      default="127.0.0.1",
                      help="Binding IP address.")
    parser.add_option("-p", "--port", dest="port", type=int,
                      default=TCP_GIT_PORT,
                      help="Binding TCP port.")
    parser.add_option("-c", "--swift_config", dest="swift_config",
                      default="",
                      help="Path to the configuration file for Swift backend.")
    options, args = parser.parse_args(args)

    try:
        import gevent
        import geventhttpclient
    except ImportError:
        print("gevent and geventhttpclient libraries are mandatory "
              " for use the Swift backend.")
        sys.exit(1)
    import gevent.monkey
    gevent.monkey.patch_socket()
    from dulwich.contrib.swift import load_conf
    from dulwich import log_utils
    logger = log_utils.getLogger(__name__)
    conf = load_conf(options.swift_config)
    backend = SwiftSystemBackend(logger, conf)

    log_utils.default_logging_config()
    server = TCPGitServer(backend, options.listen_address,
                          port=options.port)
    server.serve_forever()
예제 #3
0
파일: web.py 프로젝트: verhulstm/dulwich
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()
예제 #4
0
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()
예제 #5
0
 def handle(self, *args, **options):
     log_utils.default_logging_config()
     address = '0.0.0.0'
     port = 9418
     backend = DjangitFileSystemBackend(settings.DJANGIT_REPOS_DIR)
     server = TCPGitServer(backend, address, port)
     server.serve_forever()
예제 #6
0
파일: cli.py 프로젝트: codilemma/Python_env
    def run(self, args):
        from dulwich import log_utils
        parser = optparse.OptionParser()
        parser.add_option("-l",
                          "--listen_address",
                          dest="listen_address",
                          default="",
                          help="Binding IP address.")
        parser.add_option("-p",
                          "--port",
                          dest="port",
                          type=int,
                          default=8000,
                          help="Binding TCP port.")
        options, args = parser.parse_args(args)

        log_utils.default_logging_config()
        if len(args) >= 1:
            gitdir = args[0]
        else:
            gitdir = '.'
        from dulwich import porcelain
        porcelain.web_daemon(gitdir,
                             address=options.listen_address,
                             port=options.port)
예제 #7
0
    def run(self, args):
        from dulwich import log_utils
        from dulwich.protocol import TCP_GIT_PORT

        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=TCP_GIT_PORT,
            help="Binding TCP port.",
        )
        options, args = parser.parse_args(args)

        log_utils.default_logging_config()
        if len(args) >= 1:
            gitdir = args[0]
        else:
            gitdir = "."

        porcelain.daemon(gitdir, address=options.listen_address, port=options.port)
예제 #8
0
def main(argv=sys.argv):
    """Entry point for starting a TCP git server."""
    MysqlRepo.setup(os.environ['DB_URL'])
    log_utils.default_logging_config()
    repos = MysqlRepo.list_repos()
    backendDict = { '/%s' % repo: MysqlRepo.open(repo) for repo in repos }
    backend = DictBackend(backendDict)
    server = TCPGitServer(backend, '0.0.0.0')
    server.serve_forever()
예제 #9
0
파일: server.py 프로젝트: wavii/dulwich
def main(argv=sys.argv):
    """Entry point for starting a TCP git server."""
    if len(argv) > 1:
        gitdir = argv[1]
    else:
        gitdir = '.'

    log_utils.default_logging_config()
    backend = DictBackend({'/': Repo(gitdir)})
    server = TCPGitServer(backend, 'localhost')
    server.serve_forever()
예제 #10
0
def main(argv=sys.argv):
    """Entry point for starting a TCP git server."""
    if len(argv) > 1:
        gitdir = argv[1]
    else:
        gitdir = '.'

    log_utils.default_logging_config()
    backend = DictBackend({'/': Repo(gitdir)})
    server = TCPGitServer(backend, 'localhost')
    server.serve_forever()
예제 #11
0
파일: server.py 프로젝트: lelit/dulwich
def main(argv=sys.argv):
    """Entry point for starting a TCP 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=TCP_GIT_PORT, help="Binding TCP port.")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if len(args) > 1:
        gitdir = args[1]
    else:
        gitdir = "."
    from dulwich import porcelain

    porcelain.daemon(gitdir, address=options.listen_address, port=options.port)
예제 #12
0
파일: web.py 프로젝트: juilyoon/dulwich
    def main(argv=sys.argv):
        """Entry point for starting an HTTP git server."""
        if len(argv) > 1:
            gitdir = argv[1]
        else:
            gitdir = os.getcwd()

        # TODO: allow serving on other addresses/ports via command-line flag
        listen_addr=''
        port = 8000

        log_utils.default_logging_config()
        backend = DictBackend({'/': Repo(gitdir)})
        app = HTTPGitApplication(backend)
        server = make_server(listen_addr, port, app,
                             handler_class=HTTPGitRequestHandler)
        logger.info('Listening for HTTP connections on %s:%d', listen_addr,
                    port)
        server.serve_forever()
예제 #13
0
파일: web.py 프로젝트: wavii/dulwich
    def main(argv=sys.argv):
        """Entry point for starting an HTTP git server."""
        if len(argv) > 1:
            gitdir = argv[1]
        else:
            gitdir = os.getcwd()

        # TODO: allow serving on other addresses/ports via command-line flag
        listen_addr=''
        port = 8000

        log_utils.default_logging_config()
        backend = DictBackend({'/': Repo(gitdir)})
        app = make_wsgi_chain(backend)
        server = make_server(listen_addr, port, app,
                             handler_class=HTTPGitRequestHandler)
        logger.info('Listening for HTTP connections on %s:%d', listen_addr,
                    port)
        server.serve_forever()
예제 #14
0
def main(argv=sys.argv):
    """Entry point for starting a TCP 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=TCP_GIT_PORT,
                      help="Binding TCP port.")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if len(args) > 1:
        gitdir = args[1]
    else:
        gitdir = '.'
    from dulwich import porcelain
    porcelain.daemon(gitdir, address=options.listen_address,
                     port=options.port)
예제 #15
0
def main(argv=sys.argv):
    """Entry point for starting a TCP git server."""
    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-b", "--backend", dest="backend",
                      help="Select backend to use.",
                      choices=["file"], default="file")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if options.backend == "file":
        if len(argv) > 1:
            gitdir = args[1]
        else:
            gitdir = '.'
        backend = DictBackend({'/': Repo(gitdir)})
    else:
        raise Exception("No such backend %s." % backend)
    server = TCPGitServer(backend, 'localhost')
    server.serve_forever()
예제 #16
0
파일: server.py 프로젝트: Hasimir/dulwich
def main(argv=sys.argv):
    """Entry point for starting a TCP git server."""
    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-b", "--backend", dest="backend",
                      help="Select backend to use.",
                      choices=["file"], default="file")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if options.backend == "file":
        if len(argv) > 1:
            gitdir = args[1]
        else:
            gitdir = '.'
        backend = DictBackend({'/': Repo(gitdir)})
    else:
        raise Exception("No such backend %s." % backend)
    server = TCPGitServer(backend, 'localhost')
    server.serve_forever()
예제 #17
0
파일: server.py 프로젝트: jelmer/dulwich
def main(argv=sys.argv):
    """Entry point for starting a TCP 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=TCP_GIT_PORT,
                      help="Binding TCP port.")
    options, args = parser.parse_args(argv)

    log_utils.default_logging_config()
    if len(args) > 1:
        gitdir = args[1]
    else:
        gitdir = '.'
    # TODO(jelmer): Support git-daemon-export-ok and --export-all.
    backend = FileSystemBackend(gitdir)
    server = TCPGitServer(backend, options.listen_address, options.port)
    server.serve_forever()
예제 #18
0
def make_app(global_config, **local_conf):
    """Factory function for a Paster WSGI app

    :param append_git: each served git repo have .git appended to its
        served URL.
    :param serve_dirs: list of parent paths to check for sub-directories
        to serve.

    :returns: An instance of dulwich.web.HTTPGitApplication

    Two options to serve: serve_dirs and individual URL path to operating
    system path mappings.
    Example::

        File-system layout:
            +-/var/lib/git
            |-foo
            |-bar
            `-baz

            +-/home/git
            |-bing
            `-bang

        paster.ini:
            [app:main]
            use = egg:dulwich
            append_git = True
            serve_dirs =
                /var/lib/git
                /home/git
            blerg = /home/dannyboy/src/blerg

    Will result in the following being served::

        /foo.git   => /var/lib/git/foo
        /bar.git   => /var/lib/git/bar
        /baz.git   => /var/lib/git/baz
        /bing.git  => /home/git/bing
        /bang.git  => /home/git/bang
        /blerg.git => /home/dannyboy/src/blerg

    NOTE: The last name definition wins. Whatever directory in serve_dirs is
          last, or the last explicit mapping for the same name is what will
          be mapped.
    """
    from paste.deploy.converters import asbool
    from paste.deploy.converters import aslist
    repos = {}
    append_git = asbool(local_conf.pop('append_git', False))
    serve_dirs = aslist(local_conf.pop('serve_dirs', None))
    log_utils.default_logging_config()

    def add_repo(mapping, path, gitdir):
        try:
            mapping[path] = Repo(gitdir)
        except NotGitRepository:
            logger.error('Not a git repository, cannot serve: "%s".',
                         gitdir)

    if not local_conf and not serve_dirs:
        add_repo(repos, '/', os.getcwd())
    else:
        if serve_dirs:
            for top_dir in serve_dirs:
                if not os.path.isdir(top_dir):
                    logger.error('Not a directory, cannot serve: "%s".',
                                 top_dir)

                for d in os.listdir(top_dir):
                    repo_path = '/'.join(('', d))
                    gitdir = os.path.join(top_dir, d)
                    add_repo(repos, repo_path, gitdir)

        for repo_name, gitdir in local_conf.items():
            repo_path = '/'.join(('', repo_name))
            add_repo(repos, repo_path, gitdir)

    if not repos:
        msg = 'No repositories to serve, check the ini file: "%s".'
        logger.error(msg, global_config['__file__'])
        raise IndexError(msg % global_config['__file__'])

    if append_git:
        new_repos = {}
        for rpath, repo in repos.items():
            if rpath.endswith('.git'):
                # Don't be redundant...
                new_repos[rpath] = repo
                logger.debug('Not renaming, already ends in .git: "%s".',
                             rpath)
            else:
                new_repos['.'.join((rpath, 'git'))] = repo
        backend = DictBackend(new_repos)
    else:
        backend = DictBackend(repos)
    return HTTPGitApplication(backend)