29
from bzrlib import bzrdir, errors as bzr_errors
30
from bzrlib.foreign import foreign_vcs_registry
31
from bzrlib.lockable_files import TransportLock
32
from bzrlib.transport import register_lazy_transport
33
from bzrlib.commands import plugin_cmds
34
from bzrlib.trace import warning
36
MINIMUM_DULWICH_VERSION = (0, 1, 0)
37
COMPATIBLE_BZR_VERSIONS = [(1, 11, 0), (1, 12, 0)]
33
from bzrlib.foreign import (
36
from bzrlib.lockable_files import (
39
from bzrlib.transport import (
40
register_lazy_transport,
41
register_transport_proto,
43
from bzrlib.commands import (
46
from bzrlib.trace import (
49
from bzrlib.version_info_formats.format_rio import (
50
RioVersionInfoBuilder,
54
# versions ending in 'exp' mean experimental mappings
55
# versions ending in 'dev' mean development version
56
# versions ending in 'final' mean release (well tested, etc)
57
version_info = (0, 2, 0, 'dev', 0)
59
if version_info[3] == 'final':
60
version_string = '%d.%d.%d' % version_info[:3]
62
version_string = '%d.%d.%d%s%d' % version_info
63
__version__ = version_string
65
MINIMUM_DULWICH_VERSION = (0, 1, 1)
66
COMPATIBLE_BZR_VERSIONS = [(1, 15, 0)]
39
68
if getattr(sys, "frozen", None):
40
69
# allow import additional libs from ./_lib for bzr.exe only
61
90
help='GIT repository.', native=False, experimental=True,
65
from bzrlib.revisionspec import revspec_registry
66
revspec_registry.register_lazy("git:", "bzrlib.plugins.git.revspec",
70
from bzrlib.revisionspec import SPEC_TYPES
71
from bzrlib.plugins.git.revspec import RevisionSpec_git
72
SPEC_TYPES.append(RevisionSpec_git)
93
from bzrlib.revisionspec import revspec_registry
94
revspec_registry.register_lazy("git:", "bzrlib.plugins.git.revspec",
74
98
class GitBzrDirFormat(bzrdir.BzrDirFormat):
75
99
_lock_class = TransportLock
158
182
"""Open this directory.
185
# we dont grok readonly - git isn't integrated with transport.
187
if url.startswith('readonly+'):
188
url = url[len('readonly+'):]
189
if (not url.startswith("git://") and
190
not url.startswith("git+")):
191
raise bzr_errors.NotBranchError(transport.base)
161
192
from bzrlib.plugins.git.remote import RemoteGitDir, GitSmartTransport
162
193
if not isinstance(transport, GitSmartTransport):
163
194
raise bzr_errors.NotBranchError(transport.base)
164
# we dont grok readonly - git isn't integrated with transport.
166
if url.startswith('readonly+'):
167
url = url[len('readonly+'):]
169
195
from bzrlib.plugins.git.dir import GitLockableFiles, GitLock
170
196
lockfiles = GitLockableFiles(transport, GitLock())
171
197
return RemoteGitDir(transport, lockfiles, self)
174
200
def probe_transport(klass, transport):
175
201
"""Our format is present if the transport ends in '.not/'."""
203
if url.startswith('readonly+'):
204
url = url[len('readonly+'):]
205
if (not url.startswith("git://") and
206
not url.startswith("git+")):
207
raise bzr_errors.NotBranchError(transport.base)
176
208
# little ugly, but works
178
210
from bzrlib.plugins.git.remote import GitSmartTransport
202
234
bzrdir.BzrDirFormat.register_control_format(LocalGitBzrDirFormat)
203
235
bzrdir.BzrDirFormat.register_control_format(RemoteGitBzrDirFormat)
237
register_transport_proto('git://',
238
help="Access using the Git smart server protocol.")
239
register_transport_proto('git+ssh://',
240
help="Access using the Git smart server protocol over SSH.")
205
242
register_lazy_transport("git://", 'bzrlib.plugins.git.remote',
243
'TCPGitSmartTransport')
244
register_lazy_transport("git+ssh://", 'bzrlib.plugins.git.remote',
245
'SSHGitSmartTransport')
208
247
foreign_vcs_registry.register_lazy("git",
209
"bzrlib.plugins.git.mapping",
211
"Stupid content tracker")
248
"bzrlib.plugins.git.mapping", "foreign_git", "Stupid content tracker")
213
250
plugin_cmds.register_lazy("cmd_git_serve", [], "bzrlib.plugins.git.commands")
214
251
plugin_cmds.register_lazy("cmd_git_import", [], "bzrlib.plugins.git.commands")
253
def update_stanza(rev, stanza):
254
mapping = getattr(rev, "mapping", None)
255
if mapping is not None and mapping.revid_prefix.startswith("git-"):
256
stanza.add("git-commit", rev.foreign_revid)
259
RioVersionInfoBuilder.hooks.install_named_hook('revision',
262
def get_rich_root_format(stacked=False):
264
return bzrdir.format_registry.make_bzrdir("1.9-rich-root")
266
return bzrdir.format_registry.make_bzrdir("default-rich-root")
216
268
def test_suite():
217
269
from bzrlib.plugins.git import tests
218
270
return tests.test_suite()