/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>
3
#
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
19
"""A GIT branch and repository format implementation for bzr."""
20
0.200.125 by Jelmer Vernooij
Import dulwich from subdir if it's not installed on the system.
21
try:
22
    import dulwich as git
23
except ImportError:
24
    import os, sys
25
    sys.path.insert(0, os.path.join(os.path.dirname(__file__), "dulwich"))
26
    import dulwich as git
0.200.114 by Jelmer Vernooij
Fix reporting of git commits in 'bzr log'.
27
from bzrlib import bzrdir
28
from bzrlib.foreign import ForeignVcs, VcsMappingRegistry, foreign_vcs_registry
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
29
from bzrlib.plugins.git.dir import LocalGitBzrDirFormat, RemoteGitBzrDirFormat
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
30
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.
31
from bzrlib.commands import Command, register_command
32
from bzrlib.option import Option
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
33
0.200.39 by David Allouche
Black-box text for "bzr log" in a git tree. Further simplification of GitRevisionTree.
34
bzrdir.format_registry.register(
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
35
    'git', LocalGitBzrDirFormat,
0.200.108 by Jelmer Vernooij
Support bzr init --git.
36
    help='GIT repository.', 
37
    native=False, experimental=True,
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
38
    )
39
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
40
bzrdir.BzrDirFormat.register_control_format(LocalGitBzrDirFormat)
41
bzrdir.BzrDirFormat.register_control_format(RemoteGitBzrDirFormat)
42
43
register_lazy_transport("git://", 'bzrlib.plugins.git.remote',
44
                        'GitSmartTransport')
0.200.19 by John Arbash Meinel
More refactoring. Add some direct tests for GitModel.
45
0.200.114 by Jelmer Vernooij
Fix reporting of git commits in 'bzr log'.
46
47
class ForeignGit(ForeignVcs):
48
    """Foreign Git."""
49
50
51
git_mapping_registry = VcsMappingRegistry()
52
git_mapping_registry.register_lazy('git-experimental', "bzrlib.plugins.git.mapping",
53
                                   "BzrGitMappingExperimental")
54
foreign_vcs_registry.register("git", ForeignGit(git_mapping_registry), 
0.208.6 by Jelmer Vernooij
Merge bzr-foreign.
55
                                      "Stupid content tracker")
0.208.5 by Jelmer Vernooij
Add log show function for git.
56
0.200.114 by Jelmer Vernooij
Fix reporting of git commits in 'bzr log'.
57
0.217.1 by John Carr
Start stubbing out rewritten git-serve
58
class cmd_git_serve(Command):
59
    """Provide access to a Bazaar branch using the git protocol.
60
61
    This command is experimental and doesn't do much yet.
62
    """
63
    takes_options = [
64
        Option('inet',
65
               help='serve on stdin/out for use from inetd or sshd'),
66
        Option('directory',
67
               help='serve contents of directory',
68
               type=unicode)
69
    ]
70
71
    def run(self, inet=None, port=None, 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
        if inet:
85
            #def send_fn(data):
86
            #    sys.stdout.write(data)
87
            #    sys.stdout.flush()
88
            #server = GitServer(sys.stdin.read, send_fn)
89
            raise NotImplementedError
90
        else:
0.217.2 by John Carr
Fix missing imports. Update TCPGitServer instantiation to latest. BzrBackend needs to know which directory its repo is in.
91
            server = TCPGitServer(backend, 'localhost')
0.217.1 by John Carr
Start stubbing out rewritten git-serve
92
            server.serve_forever()
93
94
register_command(cmd_git_serve)
95
96
0.201.1 by Jelmer Vernooij
Add very small initial testsuite.
97
def test_suite():
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
98
    from bzrlib.plugins.git import tests
99
    return tests.test_suite()