/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.200.1 by Robert Collins
Commit initial content.
1
# Copyright (C) 2006 Canonical Ltd
2
# Authors: Robert Collins <robert.collins@canonical.com>
0.200.184 by Jelmer Vernooij
Update authors: line.
3
#          Jelmer Vernooij <jelmer@samba.org>
4
#          John Carr <john.carr@unrouted.co.uk>
0.200.1 by Robert Collins
Commit initial content.
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20
21
"""A GIT branch and repository format implementation for bzr."""
22
0.200.114 by Jelmer Vernooij
Fix reporting of git commits in 'bzr log'.
23
from bzrlib import bzrdir
0.200.195 by Jelmer Vernooij
Return mapping in revision_id_bzr_to_foreign() as required by the interface.
24
from bzrlib.foreign import foreign_vcs_registry
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
25
from bzrlib.transport import register_lazy_transport
0.217.2 by John Carr
Fix missing imports. Update TCPGitServer instantiation to latest. BzrBackend needs to know which directory its repo is in.
26
from bzrlib.commands import Command, register_command
27
from bzrlib.option import Option
0.200.192 by Jelmer Vernooij
use system-provided dulwich, remove own copy.
28
from bzrlib.trace import warning
29
30
MINIMUM_DULWICH_VERSION = (0, 1, 0)
31
32
try:
33
    from dulwich import __version__ as dulwich_version
34
except ImportError:
35
    warning("Please install dulwich, https://launchpad.net/dulwich")
36
    raise
37
else:
38
    if dulwich_version < MINIMUM_DULWICH_VERSION:
39
        warning("Dulwich is too old; at least %d.%d.%d is required" % MINIMUM_DULWICH_VERSION)
40
        raise ImportError
41
42
from bzrlib.plugins.git.dir import LocalGitBzrDirFormat, RemoteGitBzrDirFormat
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
43
0.200.39 by David Allouche
Black-box text for "bzr log" in a git tree. Further simplification of GitRevisionTree.
44
bzrdir.format_registry.register(
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
45
    'git', LocalGitBzrDirFormat,
0.200.108 by Jelmer Vernooij
Support bzr init --git.
46
    help='GIT repository.', 
47
    native=False, experimental=True,
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
48
    )
49
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
50
bzrdir.BzrDirFormat.register_control_format(LocalGitBzrDirFormat)
51
bzrdir.BzrDirFormat.register_control_format(RemoteGitBzrDirFormat)
52
53
register_lazy_transport("git://", 'bzrlib.plugins.git.remote',
54
                        'GitSmartTransport')
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
55
0.200.195 by Jelmer Vernooij
Return mapping in revision_id_bzr_to_foreign() as required by the interface.
56
foreign_vcs_registry.register_lazy("git", 
57
                        "bzrlib.plugins.git.mapping", 
58
                        "foreign_git",
59
                        "Stupid content tracker")
0.208.5 by Jelmer Vernooij
Add log show function for git.
60
0.200.114 by Jelmer Vernooij
Fix reporting of git commits in 'bzr log'.
61
0.217.1 by John Carr
Start stubbing out rewritten git-serve
62
class cmd_git_serve(Command):
63
    """Provide access to a Bazaar branch using the git protocol.
64
65
    This command is experimental and doesn't do much yet.
66
    """
67
    takes_options = [
68
        Option('directory',
69
               help='serve contents of directory',
70
               type=unicode)
71
    ]
72
0.217.9 by John Carr
Handle git+ssh:// seperately to our git:// server
73
    def run(self, directory=None):
0.217.1 by John Carr
Start stubbing out rewritten git-serve
74
        from dulwich.server import TCPGitServer
75
        from bzrlib.plugins.git.server import BzrBackend
76
        from bzrlib.trace import warning
77
        import os
78
79
        warning("server support in bzr-git is experimental.")
80
81
        if directory is None:
82
            directory = os.getcwd()
83
84
        backend = BzrBackend(directory)
85
0.217.9 by John Carr
Handle git+ssh:// seperately to our git:// server
86
        server = TCPGitServer(backend, 'localhost')
87
        server.serve_forever()
0.217.1 by John Carr
Start stubbing out rewritten git-serve
88
89
register_command(cmd_git_serve)
90
91
0.200.177 by Jelmer Vernooij
Add git-import command.
92
class cmd_git_import(Command):
93
    """Import all branches from a git repository.
94
95
    """
96
97
    takes_args = ["src_location", "dest_location"]
98
99
    def run(self, src_location, dest_location):
100
        from bzrlib.bzrdir import BzrDir, format_registry
101
        from bzrlib.errors import NoRepositoryPresent, NotBranchError
102
        from bzrlib.repository import Repository
103
        source_repo = Repository.open(src_location)
104
        format = format_registry.make_bzrdir('rich-root-pack')
105
        try:
106
            target_bzrdir = BzrDir.open(dest_location)
107
        except NotBranchError:
108
            target_bzrdir = BzrDir.create(dest_location, format=format)
109
        try:
110
            target_repo = target_bzrdir.open_repository()
111
        except NoRepositoryPresent:
112
            target_repo = target_bzrdir.create_repository(shared=True)
113
114
        target_repo.fetch(source_repo)
115
        for name, ref in source_repo._git.heads().iteritems():
116
            head_loc = os.path.join(dest_location, name)
117
            try:
118
                head_bzrdir = BzrDir.open(head_loc)
119
            except NotBranchError:
120
                head_bzrdir = BzrDir.create(head_loc, format=format)
121
            try:
122
                head_branch = head_bzrdir.open_branch()
123
            except NotBranchError:
124
                head_branch = head_bzrdir.create_branch()
125
            head_branch.generate_revision_history(source_repo.get_mapping().revision_id_foreign_to_bzr(ref))
126
127
128
register_command(cmd_git_import)
129
130
0.201.1 by Jelmer Vernooij
Add very small initial testsuite.
131
def test_suite():
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
132
    from bzrlib.plugins.git import tests
133
    return tests.test_suite()