/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to __init__.py

Merge new dulwich.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2006 Canonical Ltd
2
2
# Authors: Robert Collins <robert.collins@canonical.com>
3
 
#          Jelmer Vernooij <jelmer@samba.org>
4
 
#          John Carr <john.carr@unrouted.co.uk>
5
3
#
6
4
# This program is free software; you can redistribute it and/or modify
7
5
# it under the terms of the GNU General Public License as published by
28
26
    import dulwich as git
29
27
from bzrlib import bzrdir
30
28
from bzrlib.foreign import ForeignVcs, VcsMappingRegistry, foreign_vcs_registry
31
 
from bzrlib.plugins.git.dir import LocalGitBzrDirFormat, RemoteGitBzrDirFormat
32
 
from bzrlib.transport import register_lazy_transport
33
 
from bzrlib.commands import Command, register_command
34
 
from bzrlib.option import Option
 
29
from bzrlib.plugins.git.dir import GitBzrDirFormat
35
30
 
36
31
bzrdir.format_registry.register(
37
 
    'git', LocalGitBzrDirFormat,
 
32
    'git', GitBzrDirFormat,
38
33
    help='GIT repository.', 
39
34
    native=False, experimental=True,
40
35
    )
41
36
 
42
 
bzrdir.BzrDirFormat.register_control_format(LocalGitBzrDirFormat)
43
 
bzrdir.BzrDirFormat.register_control_format(RemoteGitBzrDirFormat)
44
 
 
45
 
register_lazy_transport("git://", 'bzrlib.plugins.git.remote',
46
 
                        'GitSmartTransport')
 
37
bzrdir.BzrDirFormat.register_control_format(GitBzrDirFormat)
47
38
 
48
39
 
49
40
class ForeignGit(ForeignVcs):
57
48
                                      "Stupid content tracker")
58
49
 
59
50
 
60
 
class cmd_git_serve(Command):
61
 
    """Provide access to a Bazaar branch using the git protocol.
62
 
 
63
 
    This command is experimental and doesn't do much yet.
64
 
    """
65
 
    takes_options = [
66
 
        Option('directory',
67
 
               help='serve contents of directory',
68
 
               type=unicode)
69
 
    ]
70
 
 
71
 
    def run(self, directory=None):
72
 
        from dulwich.server import TCPGitServer
73
 
        from bzrlib.plugins.git.server import BzrBackend
74
 
        from bzrlib.trace import warning
75
 
        import os
76
 
 
77
 
        warning("server support in bzr-git is experimental.")
78
 
 
79
 
        if directory is None:
80
 
            directory = os.getcwd()
81
 
 
82
 
        backend = BzrBackend(directory)
83
 
 
84
 
        server = TCPGitServer(backend, 'localhost')
85
 
        server.serve_forever()
86
 
 
87
 
register_command(cmd_git_serve)
88
 
 
89
 
 
90
 
class cmd_git_import(Command):
91
 
    """Import all branches from a git repository.
92
 
 
93
 
    """
94
 
 
95
 
    takes_args = ["src_location", "dest_location"]
96
 
 
97
 
    def run(self, src_location, dest_location):
98
 
        from bzrlib.bzrdir import BzrDir, format_registry
99
 
        from bzrlib.errors import NoRepositoryPresent, NotBranchError
100
 
        from bzrlib.repository import Repository
101
 
        source_repo = Repository.open(src_location)
102
 
        format = format_registry.make_bzrdir('rich-root-pack')
103
 
        try:
104
 
            target_bzrdir = BzrDir.open(dest_location)
105
 
        except NotBranchError:
106
 
            target_bzrdir = BzrDir.create(dest_location, format=format)
107
 
        try:
108
 
            target_repo = target_bzrdir.open_repository()
109
 
        except NoRepositoryPresent:
110
 
            target_repo = target_bzrdir.create_repository(shared=True)
111
 
 
112
 
        target_repo.fetch(source_repo)
113
 
        for name, ref in source_repo._git.heads().iteritems():
114
 
            head_loc = os.path.join(dest_location, name)
115
 
            try:
116
 
                head_bzrdir = BzrDir.open(head_loc)
117
 
            except NotBranchError:
118
 
                head_bzrdir = BzrDir.create(head_loc, format=format)
119
 
            try:
120
 
                head_branch = head_bzrdir.open_branch()
121
 
            except NotBranchError:
122
 
                head_branch = head_bzrdir.create_branch()
123
 
            head_branch.generate_revision_history(source_repo.get_mapping().revision_id_foreign_to_bzr(ref))
124
 
 
125
 
 
126
 
register_command(cmd_git_import)
127
 
 
128
 
 
129
51
def test_suite():
130
52
    from bzrlib.plugins.git import tests
131
53
    return tests.test_suite()