/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Ā upstream.

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>
3
5
#
4
6
# This program is free software; you can redistribute it and/or modify
5
7
# it under the terms of the GNU General Public License as published by
26
28
    import dulwich as git
27
29
from bzrlib import bzrdir
28
30
from bzrlib.foreign import ForeignVcs, VcsMappingRegistry, foreign_vcs_registry
29
 
from bzrlib.plugins.git.dir import GitBzrDirFormat
 
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
30
35
 
31
36
bzrdir.format_registry.register(
32
 
    'git', GitBzrDirFormat,
 
37
    'git', LocalGitBzrDirFormat,
33
38
    help='GIT repository.', 
34
39
    native=False, experimental=True,
35
40
    )
36
41
 
37
 
bzrdir.BzrDirFormat.register_control_format(GitBzrDirFormat)
 
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')
38
47
 
39
48
 
40
49
class ForeignGit(ForeignVcs):
48
57
                                      "Stupid content tracker")
49
58
 
50
59
 
 
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
 
51
129
def test_suite():
52
130
    from bzrlib.plugins.git import tests
53
131
    return tests.test_suite()