/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

Add check-all target.

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
 
45
45
from bzrlib import (
46
46
    errors as bzr_errors,
47
 
    osutils,
48
 
    )
49
 
try:
50
 
    from bzrlib.controldir import (
51
 
        ControlDirFormat,
52
 
        ControlDir,
53
 
        Prober,
54
 
        format_registry,
55
 
        )
56
 
except ImportError:
57
 
    # bzr < 2.3
58
 
    from bzrlib.bzrdir import (
59
 
        BzrDirFormat,
60
 
        BzrDir,
61
 
        format_registry,
62
 
        )
63
 
    ControlDir = BzrDir
64
 
    ControlDirFormat = BzrDirFormat
65
 
    Prober = object
66
 
    has_controldir = False
67
 
else:
68
 
    has_controldir = True
 
47
    )
 
48
 
 
49
from bzrlib.controldir import (
 
50
    ControlDirFormat,
 
51
    Prober,
 
52
    format_registry,
 
53
    network_format_registry as controldir_network_format_registry,
 
54
    )
69
55
 
70
56
from bzrlib.foreign import (
71
57
    foreign_vcs_registry,
73
59
from bzrlib.help_topics import (
74
60
    topic_registry,
75
61
    )
76
 
from bzrlib.lockable_files import (
77
 
    TransportLock,
78
 
    )
79
62
from bzrlib.transport import (
80
63
    register_lazy_transport,
81
64
    register_transport_proto,
83
66
from bzrlib.commands import (
84
67
    plugin_cmds,
85
68
    )
86
 
from bzrlib.version_info_formats.format_rio import (
87
 
    RioVersionInfoBuilder,
88
 
    )
89
69
from bzrlib.send import (
90
70
    format_registry as send_format_registry,
91
71
    )
133
113
revspec_registry.register_lazy("git:", "bzrlib.plugins.git.revspec",
134
114
    "RevisionSpec_git")
135
115
 
136
 
try:
137
 
    from bzrlib.revisionspec import dwim_revspecs
138
 
except ImportError:
139
 
    pass
140
 
else:
 
116
from bzrlib.revisionspec import dwim_revspecs, RevisionSpec_dwim
 
117
if getattr(RevisionSpec_dwim, "append_possible_lazy_revspec", None):
 
118
    RevisionSpec_dwim.append_possible_lazy_revspec(
 
119
        "bzrlib.plugins.git.revspec", "RevisionSpec_git")
 
120
else: # bzr < 2.4
141
121
    from bzrlib.plugins.git.revspec import RevisionSpec_git
142
122
    dwim_revspecs.append(RevisionSpec_git)
143
123
 
144
124
 
145
 
class GitControlDirFormat(ControlDirFormat):
146
 
 
147
 
    _lock_class = TransportLock
148
 
 
149
 
    colocated_branches = True
150
 
 
151
 
    def __eq__(self, other):
152
 
        return type(self) == type(other)
153
 
 
154
 
    def is_supported(self):
155
 
        return True
156
 
 
157
 
    def network_name(self):
158
 
        return "git"
159
 
 
160
 
 
161
125
class LocalGitProber(Prober):
162
126
 
163
127
    def probe_transport(self, transport):
178
142
        except dulwich.errors.NotGitRepository, e:
179
143
            raise bzr_errors.NotBranchError(path=transport.base)
180
144
        else:
 
145
            from bzrlib.plugins.git.dir import (
 
146
                BareLocalGitControlDirFormat,
 
147
                LocalGitControlDirFormat,
 
148
                )
181
149
            if gitrepo.bare:
182
150
                return BareLocalGitControlDirFormat()
183
151
            else:
184
152
                return LocalGitControlDirFormat()
185
153
 
186
 
 
187
 
class LocalGitControlDirFormat(GitControlDirFormat):
188
 
    """The .git directory control format."""
189
 
 
190
 
    bare = False
191
 
 
192
 
    @classmethod
193
 
    def _known_formats(self):
194
 
        return set([LocalGitControlDirFormat()])
195
 
 
196
 
    def open(self, transport, _found=None):
197
 
        """Open this directory.
198
 
 
199
 
        """
200
 
        lazy_check_versions()
201
 
        from bzrlib.plugins.git.transportgit import TransportRepo
202
 
        gitrepo = TransportRepo(transport)
203
 
        from bzrlib.plugins.git.dir import LocalGitDir, GitLockableFiles, GitLock
204
 
        lockfiles = GitLockableFiles(transport, GitLock())
205
 
        return LocalGitDir(transport, lockfiles, gitrepo, self)
206
 
 
207
 
    @classmethod
208
 
    def probe_transport(klass, transport):
209
 
        prober = LocalGitProber()
210
 
        return prober.probe_transport(transport)
211
 
 
212
 
    def get_format_description(self):
213
 
        return "Local Git Repository"
214
 
 
215
 
    def initialize_on_transport(self, transport):
216
 
        from bzrlib.transport.local import LocalTransport
217
 
 
218
 
        if not isinstance(transport, LocalTransport):
219
 
            raise NotImplementedError(self.initialize,
220
 
                "Can't create Git Repositories/branches on "
221
 
                "non-local transports")
222
 
        lazy_check_versions()
223
 
        from dulwich.repo import Repo
224
 
        Repo.init(transport.local_abspath(".").encode(osutils._fs_enc),
225
 
            bare=self.bare)
226
 
        return self.open(transport)
227
 
 
228
 
    def is_supported(self):
229
 
        return True
230
 
 
231
 
 
232
 
class BareLocalGitControlDirFormat(LocalGitControlDirFormat):
233
 
 
234
 
    bare = True
235
 
    supports_workingtrees = False
236
 
 
237
 
    @classmethod
238
 
    def _known_formats(self):
239
 
        return set([RemoteGitControlDirFormat()])
240
 
 
241
 
    def get_format_description(self):
242
 
        return "Local Git Repository (bare)"
 
154
    @classmethod
 
155
    def known_formats(cls):
 
156
        from bzrlib.plugins.git.dir import (
 
157
            BareLocalGitControlDirFormat,
 
158
            LocalGitControlDirFormat,
 
159
            )
 
160
        return set([BareLocalGitControlDirFormat(), LocalGitControlDirFormat()])
243
161
 
244
162
 
245
163
class RemoteGitProber(Prober):
251
169
        if (not url.startswith("git://") and not url.startswith("git+")):
252
170
            raise bzr_errors.NotBranchError(transport.base)
253
171
        # little ugly, but works
254
 
        from bzrlib.plugins.git.remote import GitSmartTransport
 
172
        from bzrlib.plugins.git.remote import (
 
173
            GitSmartTransport,
 
174
            RemoteGitControlDirFormat,
 
175
            )
255
176
        if not isinstance(transport, GitSmartTransport):
256
177
            raise bzr_errors.NotBranchError(transport.base)
257
178
        return RemoteGitControlDirFormat()
258
179
 
259
 
 
260
 
 
261
 
class RemoteGitControlDirFormat(GitControlDirFormat):
262
 
    """The .git directory control format."""
263
 
 
264
 
    supports_workingtrees = False
265
 
 
266
180
    @classmethod
267
 
    def _known_formats(self):
 
181
    def known_formats(cls):
 
182
        from bzrlib.plugins.git.remote import RemoteGitControlDirFormat
268
183
        return set([RemoteGitControlDirFormat()])
269
184
 
270
 
    def open(self, transport, _found=None):
271
 
        """Open this directory.
272
 
 
273
 
        """
274
 
        # we dont grok readonly - git isn't integrated with transport.
275
 
        url = transport.base
276
 
        if url.startswith('readonly+'):
277
 
            url = url[len('readonly+'):]
278
 
        if (not url.startswith("git://") and not url.startswith("git+")):
279
 
            raise bzr_errors.NotBranchError(transport.base)
280
 
        from bzrlib.plugins.git.remote import RemoteGitDir, GitSmartTransport
281
 
        if not isinstance(transport, GitSmartTransport):
282
 
            raise bzr_errors.NotBranchError(transport.base)
283
 
        from bzrlib.plugins.git.dir import GitLockableFiles, GitLock
284
 
        lockfiles = GitLockableFiles(transport, GitLock())
285
 
        return RemoteGitDir(transport, lockfiles, self)
286
 
 
287
 
    @classmethod
288
 
    def probe_transport(klass, transport):
289
 
        """Our format is present if the transport ends in '.not/'."""
290
 
        prober = RemoteGitProber()
291
 
        return prober.probe_transport(transport)
292
 
 
293
 
    def get_format_description(self):
294
 
        return "Remote Git Repository"
295
 
 
296
 
    def initialize_on_transport(self, transport):
297
 
        raise bzr_errors.UninitializableFormat(self)
298
 
 
299
 
 
300
 
if has_controldir:
 
185
 
 
186
if not getattr(Prober, "known_formats", None): # bzr < 2.4
 
187
    from bzrlib.plugins.git.dir import (
 
188
        LocalGitControlDirFormat, BareLocalGitControlDirFormat,
 
189
        )
 
190
    from bzrlib.plugins.git.remote import RemoteGitControlDirFormat
301
191
    ControlDirFormat.register_format(LocalGitControlDirFormat())
302
192
    ControlDirFormat.register_format(BareLocalGitControlDirFormat())
303
193
    ControlDirFormat.register_format(RemoteGitControlDirFormat())
304
 
    ControlDirFormat.register_prober(LocalGitProber)
305
 
    ControlDirFormat.register_prober(RemoteGitProber)
306
 
else:
307
 
    ControlDirFormat.register_control_format(LocalGitControlDirFormat)
308
 
    ControlDirFormat.register_control_format(BareLocalGitControlDirFormat)
309
 
    ControlDirFormat.register_control_format(RemoteGitControlDirFormat)
 
194
ControlDirFormat.register_prober(LocalGitProber)
 
195
ControlDirFormat.register_prober(RemoteGitProber)
310
196
 
311
197
register_transport_proto('git://',
312
198
        help="Access using the Git smart server protocol.")
332
218
    if mapping is not None and mapping.revid_prefix.startswith("git-"):
333
219
        stanza.add("git-commit", rev.foreign_revid)
334
220
 
335
 
 
336
 
rio_hooks = getattr(RioVersionInfoBuilder, "hooks", None)
337
 
if rio_hooks is not None:
338
 
    rio_hooks.install_named_hook('revision', update_stanza, None)
 
221
try:
 
222
    from bzrlib.hooks import install_lazy_named_hook
 
223
except ImportError: # Compatibility with bzr < 2.4
 
224
    from bzrlib.version_info_formats.format_rio import (
 
225
        RioVersionInfoBuilder,
 
226
        )
 
227
    RioVersionInfoBuilder.hooks.install_named_hook('revision', update_stanza,
 
228
        "git commits")
 
229
else:
 
230
    install_lazy_named_hook("bzrlib.version_info_formats.format_rio",
 
231
        "RioVersionInfoBuilder.hooks", "revision", update_stanza,
 
232
        "git commits")
339
233
 
340
234
 
341
235
from bzrlib.transport import transport_server_registry
346
240
 
347
241
 
348
242
from bzrlib.repository import (
 
243
    format_registry as repository_format_registry,
349
244
    network_format_registry as repository_network_format_registry,
350
245
    )
351
246
repository_network_format_registry.register_lazy('git',
352
247
    'bzrlib.plugins.git.repository', 'GitRepositoryFormat')
353
248
 
354
249
try:
355
 
    from bzrlib.controldir import (
356
 
        network_format_registry as controldir_network_format_registry,
357
 
        )
358
 
except ImportError:
359
 
    from bzrlib.bzrdir import (
360
 
        network_format_registry as controldir_network_format_registry,
361
 
        )
362
 
controldir_network_format_registry.register('git', GitControlDirFormat)
 
250
    register_extra_lazy_repository_format = getattr(repository_format_registry,
 
251
        "register_extra_lazy")
 
252
except AttributeError: # bzr < 2.4
 
253
    pass
 
254
else:
 
255
    register_extra_lazy_repository_format('bzrlib.plugins.git.repository',
 
256
        'GitRepositoryFormat')
 
257
 
 
258
from bzrlib.branch import (
 
259
    network_format_registry as branch_network_format_registry,
 
260
    )
 
261
branch_network_format_registry.register_lazy('git',
 
262
    'bzrlib.plugins.git.branch', 'GitBranchFormat')
 
263
 
 
264
try:
 
265
    from bzrlib.branch import (
 
266
        format_registry as branch_format_registry,
 
267
        )
 
268
except ImportError: # bzr < 2.4
 
269
    pass
 
270
else:
 
271
    branch_format_registry.register_extra_lazy(
 
272
        'bzrlib.plugins.git.branch',
 
273
        'GitBranchFormat',
 
274
        )
 
275
 
 
276
try:
 
277
    from bzrlib.workingtree import (
 
278
        format_registry as workingtree_format_registry,
 
279
        )
 
280
except ImportError: # bzr < 2.4
 
281
    pass
 
282
else:
 
283
    workingtree_format_registry.register_extra_lazy(
 
284
        'bzrlib.plugins.git.workingtree',
 
285
        'GitWorkingTreeFormat',
 
286
        )
 
287
 
 
288
controldir_network_format_registry.register_lazy('git',
 
289
    "bzrlib.plugins.git.dir", "GitControlDirFormat")
363
290
 
364
291
send_format_registry.register_lazy('git', 'bzrlib.plugins.git.send',
365
292
                                   'send_git', 'Git am-style diff format')
366
293
 
367
 
topic_registry.register_lazy('git',
368
 
                             'bzrlib.plugins.git.help',
369
 
                             'help_git', 'Using Bazaar with Git')
 
294
topic_registry.register_lazy('git', 'bzrlib.plugins.git.help', 'help_git',
 
295
    'Using Bazaar with Git')
370
296
 
371
 
try:
372
 
    from bzrlib.diff import format_registry as diff_format_registry
373
 
except ImportError:
374
 
    pass
375
 
else:
376
 
    diff_format_registry.register_lazy('git', 'bzrlib.plugins.git.send',
377
 
        'GitDiffTree', 'Git am-style diff format')
 
297
from bzrlib.diff import format_registry as diff_format_registry
 
298
diff_format_registry.register_lazy('git', 'bzrlib.plugins.git.send',
 
299
    'GitDiffTree', 'Git am-style diff format')
378
300
 
379
301
def test_suite():
380
302
    from bzrlib.plugins.git import tests