/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.358.2 by Jelmer Vernooij
Refresh copyright headers, add my email.
1
# Copyright (C) 2008-2018 Jelmer Vernooij <jelmer@jelmer.uk>
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
2
# Copyright (C) 2007 Canonical Ltd
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
0.358.1 by Jelmer Vernooij
Fix FSF address.
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
17
18
"""An adapter between a Git Repository and a Bazaar Branch"""
19
0.200.1594 by Jelmer Vernooij
Use absolute_import everywhere.
20
from __future__ import absolute_import
21
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
22
from .. import (
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
23
    check,
0.200.43 by David Allouche
Ultra-experimental support for "bzr pull". No test. No sanity.
24
    errors,
0.200.1281 by Jelmer Vernooij
Provide Repository.get_known_graph_ancestry.
25
    graph as _mod_graph,
0.200.1670 by Jelmer Vernooij
Fix compatibility with newer versions of bzr.
26
    lock,
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
27
    repository,
0.285.5 by Jelmer Vernooij
Fix import.
28
    revision as _mod_revision,
0.425.1 by Jelmer Vernooij
Add really basic check implementation.
29
    trace,
0.200.1411 by Jelmer Vernooij
Fix control files.
30
    transactions,
0.200.1601 by Jelmer Vernooij
remove compatibility code for bzr < 2.5.
31
    ui,
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
32
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
33
from ..decorators import only_raises
34
from ..foreign import (
0.200.292 by Jelmer Vernooij
Fix formatting.
35
    ForeignRepository,
36
    )
6986.2.3 by Jelmer Vernooij
Merge trunk
37
from ..sixish import (
7045.1.11 by Jelmer Vernooij
Some annotate fixes.
38
    viewitems,
39
    viewvalues,
40
    )
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
41
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
42
from .commit import (
0.200.387 by Jelmer Vernooij
Initial work on supporting commit in git trees.
43
    GitCommitBuilder,
44
    )
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
45
from .filegraph import (
0.200.1283 by Jelmer Vernooij
Provide Repository.get_file_graph() and Tree.get_file_revision().
46
    GitFileLastChangeScanner,
47
    GitFileParentProvider,
48
    )
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
49
from .mapping import (
0.200.256 by Jelmer Vernooij
Add tests for import_revision_gist.
50
    default_mapping,
0.200.1263 by Jelmer Vernooij
Fix foreign_vcs_git.
51
    foreign_vcs_git,
0.200.256 by Jelmer Vernooij
Add tests for import_revision_gist.
52
    mapping_registry,
53
    )
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
54
from .tree import (
0.200.617 by Jelmer Vernooij
Add custom InterTree for use between git revision trees.
55
    GitRevisionTree,
56
    )
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
57
58
0.200.1636 by Jelmer Vernooij
Some formatting fixes.
59
from dulwich.errors import (
60
    NotCommitError,
61
    )
0.252.21 by Jelmer Vernooij
Fix GitRepository.all_revision_ids() to find all revisions.
62
from dulwich.objects import (
63
    Commit,
0.200.1153 by Jelmer Vernooij
Import ZERO_SHA from dulwich.objects.
64
    ZERO_SHA,
0.252.21 by Jelmer Vernooij
Fix GitRepository.all_revision_ids() to find all revisions.
65
    )
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
66
from dulwich.object_store import (
67
    tree_lookup_path,
68
    )
0.252.21 by Jelmer Vernooij
Fix GitRepository.all_revision_ids() to find all revisions.
69
70
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
71
class GitCheck(check.Check):
72
73
    def __init__(self, repository, check_repo=True):
74
        self.repository = repository
0.425.1 by Jelmer Vernooij
Add really basic check implementation.
75
        self.check_repo = check_repo
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
76
        self.checked_rev_cnt = 0
0.425.1 by Jelmer Vernooij
Add really basic check implementation.
77
        self.object_count = None
78
        self.problems = []
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
79
80
    def check(self, callback_refs=None, check_repo=True):
81
        if callback_refs is None:
82
            callback_refs = {}
7143.15.3 by Jelmer Vernooij
Fix pep8 issues in breezy.git.
83
        with self.repository.lock_read(), \
84
                ui.ui_factory.nested_progress_bar() as self.progress:
0.425.1 by Jelmer Vernooij
Add really basic check implementation.
85
            shas = set(self.repository._git.object_store)
86
            self.object_count = len(shas)
87
            # TODO(jelmer): Check more things
88
            for i, sha in enumerate(shas):
89
                self.progress.update('checking objects', i, self.object_count)
90
                o = self.repository._git.object_store[sha]
91
                try:
92
                    o.check()
93
                except Exception as e:
94
                    self.problems.append((sha, e))
95
96
    def _report_repo_results(self, verbose):
97
        trace.note('checked repository {0} format {1}'.format(
98
            self.repository.user_url,
99
            self.repository._format))
100
        trace.note('%6d objects', self.object_count)
101
        for sha, problem in self.problems:
102
            trace.note('%s: %s', sha, problem)
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
103
104
    def report_results(self, verbose):
0.425.1 by Jelmer Vernooij
Add really basic check implementation.
105
        if self.check_repo:
106
            self._report_repo_results(verbose)
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
107
108
0.200.1447 by Jelmer Vernooij
Load optimisers at most once.
109
_optimisers_loaded = False
110
7143.15.2 by Jelmer Vernooij
Run autopep8.
111
0.200.1447 by Jelmer Vernooij
Load optimisers at most once.
112
def lazy_load_optimisers():
113
    global _optimisers_loaded
114
    if _optimisers_loaded:
115
        return
0.401.2 by Jelmer Vernooij
Move all InterRepository implementations into interrepo.
116
    from . import interrepo
117
    for optimiser in [interrepo.InterRemoteGitNonGitRepository,
118
                      interrepo.InterLocalGitNonGitRepository,
119
                      interrepo.InterLocalGitLocalGitRepository,
120
                      interrepo.InterRemoteGitLocalGitRepository,
121
                      interrepo.InterToLocalGitRepository,
0.401.3 by Jelmer Vernooij
Formatting fixes.
122
                      interrepo.InterToRemoteGitRepository,
123
                      ]:
0.200.1447 by Jelmer Vernooij
Load optimisers at most once.
124
        repository.InterRepository.register_optimiser(optimiser)
125
    _optimisers_loaded = True
126
127
0.200.115 by Jelmer Vernooij
Pass mapping object.
128
class GitRepository(ForeignRepository):
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
129
    """An adapter to git repositories for bzr."""
130
0.200.41 by David Allouche
Define _serializer = None in GitRepository.
131
    _serializer = None
0.200.1263 by Jelmer Vernooij
Fix foreign_vcs_git.
132
    vcs = foreign_vcs_git
0.200.1086 by Jelmer Vernooij
Provide chk_bytes attribute.
133
    chk_bytes = None
0.200.41 by David Allouche
Define _serializer = None in GitRepository.
134
0.200.1411 by Jelmer Vernooij
Fix control files.
135
    def __init__(self, gitdir):
0.200.1447 by Jelmer Vernooij
Load optimisers at most once.
136
        self._transport = gitdir.root_transport
0.200.1307 by Jelmer Vernooij
Formatting fixes, specify path to a couple more functions.
137
        super(GitRepository, self).__init__(GitRepositoryFormat(),
7143.15.2 by Jelmer Vernooij
Run autopep8.
138
                                            gitdir, control_files=None)
0.200.1449 by Jelmer Vernooij
Fix compatibility with bzr < 2.5 when used with remote repositories.
139
        self.base = gitdir.root_transport.base
0.200.1447 by Jelmer Vernooij
Load optimisers at most once.
140
        lazy_load_optimisers()
0.200.1411 by Jelmer Vernooij
Fix control files.
141
        self._lock_mode = None
142
        self._lock_count = 0
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
143
0.200.1231 by Jelmer Vernooij
Implement GitRepository.add_fallback_repository.
144
    def add_fallback_repository(self, basis_url):
0.200.1307 by Jelmer Vernooij
Formatting fixes, specify path to a couple more functions.
145
        raise errors.UnstackableRepositoryFormat(self._format,
7143.15.2 by Jelmer Vernooij
Run autopep8.
146
                                                 self.control_transport.base)
0.200.1231 by Jelmer Vernooij
Implement GitRepository.add_fallback_repository.
147
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
148
    def is_shared(self):
0.200.886 by Jelmer Vernooij
Git repositories are not shared.
149
        return False
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
150
0.200.1411 by Jelmer Vernooij
Fix control files.
151
    def get_physical_lock_status(self):
152
        return False
153
154
    def lock_write(self):
155
        """See Branch.lock_write()."""
156
        if self._lock_mode:
0.361.1 by Jelmer Vernooij
Don't use assert.
157
            if self._lock_mode != 'w':
158
                raise errors.ReadOnlyError(self)
0.200.1411 by Jelmer Vernooij
Fix control files.
159
            self._lock_count += 1
160
        else:
161
            self._lock_mode = 'w'
162
            self._lock_count = 1
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
163
            self._transaction = transactions.WriteTransaction()
0.200.1680 by Jelmer Vernooij
Fix repo locks.
164
        return repository.RepositoryWriteLockResult(self.unlock, None)
0.200.1411 by Jelmer Vernooij
Fix control files.
165
0.200.1454 by Jelmer Vernooij
Provide Repository.break_lock.
166
    def break_lock(self):
167
        raise NotImplementedError(self.break_lock)
168
0.200.1411 by Jelmer Vernooij
Fix control files.
169
    def dont_leave_lock_in_place(self):
170
        raise NotImplementedError(self.dont_leave_lock_in_place)
171
172
    def leave_lock_in_place(self):
173
        raise NotImplementedError(self.leave_lock_in_place)
174
175
    def lock_read(self):
176
        if self._lock_mode:
0.361.1 by Jelmer Vernooij
Don't use assert.
177
            if self._lock_mode not in ('r', 'w'):
178
                raise AssertionError
0.200.1411 by Jelmer Vernooij
Fix control files.
179
            self._lock_count += 1
180
        else:
181
            self._lock_mode = 'r'
182
            self._lock_count = 1
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
183
            self._transaction = transactions.ReadOnlyTransaction()
0.200.1670 by Jelmer Vernooij
Fix compatibility with newer versions of bzr.
184
        return lock.LogicalLockResult(self.unlock)
0.200.1411 by Jelmer Vernooij
Fix control files.
185
186
    @only_raises(errors.LockNotHeld, errors.LockBroken)
187
    def unlock(self):
188
        if self._lock_count == 0:
189
            raise errors.LockNotHeld(self)
190
        if self._lock_count == 1 and self._lock_mode == 'w':
191
            if self._write_group is not None:
192
                self.abort_write_group()
193
                self._lock_count -= 1
194
                self._lock_mode = None
195
                raise errors.BzrError(
196
                    'Must end write groups before releasing write locks.')
197
        self._lock_count -= 1
198
        if self._lock_count == 0:
199
            self._lock_mode = None
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
200
            transaction = self._transaction
201
            self._transaction = None
202
            transaction.finish()
0.200.1411 by Jelmer Vernooij
Fix control files.
203
204
    def is_write_locked(self):
205
        return (self._lock_mode == 'w')
206
207
    def is_locked(self):
208
        return (self._lock_mode is not None)
209
210
    def get_transaction(self):
211
        """See Repository.get_transaction()."""
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
212
        if self._transaction is None:
0.200.1411 by Jelmer Vernooij
Fix control files.
213
            return transactions.PassThroughTransaction()
214
        else:
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
215
            return self._transaction
0.200.1411 by Jelmer Vernooij
Fix control files.
216
0.200.1246 by Jelmer Vernooij
Provide GitRepository.reconcile.
217
    def reconcile(self, other=None, thorough=False):
218
        """Reconcile this repository."""
7206.6.4 by Jelmer Vernooij
Move reconcile logic to breezy.bzr.reconcile.
219
        from ..reconcile import ReconcileResult
220
        ret = ReconcileResult()
221
        ret.aborted = False
222
        return ret
0.200.1246 by Jelmer Vernooij
Provide GitRepository.reconcile.
223
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
224
    def supports_rich_root(self):
225
        return True
226
227
    def get_mapping(self):
228
        return default_mapping
229
0.200.147 by Jelmer Vernooij
Merge new dulwich; fetching objects from local repository works now; they aren't converted yet though.
230
    def make_working_trees(self):
0.200.1546 by Jelmer Vernooij
Provide get_config.
231
        return not self._git.get_config().get_boolean(("core", ), "bare")
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
232
0.200.557 by Jelmer Vernooij
Implement GitRepository.revision_graph_can_have_wrong_parents().
233
    def revision_graph_can_have_wrong_parents(self):
234
        return False
235
0.200.1158 by Jelmer Vernooij
Implement stub Repositor.add_signature_text.
236
    def add_signature_text(self, revid, signature):
237
        raise errors.UnsupportedOperation(self.add_signature_text, self)
238
0.200.1467 by Jelmer Vernooij
Implement GitRepository.sign_revision.
239
    def sign_revision(self, revision_id, gpg_strategy):
240
        raise errors.UnsupportedOperation(self.add_signature_text, self)
241
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
242
243
class LocalGitRepository(GitRepository):
0.200.276 by Jelmer Vernooij
Improve formatting.
244
    """Git repository on the file system."""
0.200.139 by Jelmer Vernooij
Share more code between local and remote classes, support opening remote branches.
245
0.200.1411 by Jelmer Vernooij
Fix control files.
246
    def __init__(self, gitdir):
247
        GitRepository.__init__(self, gitdir)
0.200.90 by Jelmer Vernooij
Basic support for opening working trees.
248
        self._git = gitdir._git
0.200.1283 by Jelmer Vernooij
Provide Repository.get_file_graph() and Tree.get_file_revision().
249
        self._file_change_scanner = GitFileLastChangeScanner(self)
0.334.1 by Jelmer Vernooij
Improve transaction and write group handling.
250
        self._transaction = None
0.200.45 by David Allouche
More performance hacking, introduce sqlite cache, escape characters in commits that break serializers.
251
0.200.1224 by Jelmer Vernooij
provide explicit GitRepository.get_commit_builder.
252
    def get_commit_builder(self, branch, parents, config, timestamp=None,
253
                           timezone=None, committer=None, revprops=None,
254
                           revision_id=None, lossy=False):
255
        """Obtain a CommitBuilder for this repository.
256
257
        :param branch: Branch to commit to.
258
        :param parents: Revision ids of the parents of the new revision.
259
        :param config: Configuration to use.
260
        :param timestamp: Optional timestamp recorded for commit.
261
        :param timezone: Optional timezone for timestamp.
262
        :param committer: Optional committer to set for commit.
263
        :param revprops: Optional dictionary of revision properties.
264
        :param revision_id: Optional revision id.
265
        :param lossy: Whether to discard data that can not be natively
266
            represented, when pushing to a foreign VCS
267
        """
7143.15.3 by Jelmer Vernooij
Fix pep8 issues in breezy.git.
268
        builder = GitCommitBuilder(
269
            self, parents, config, timestamp, timezone, committer, revprops,
270
            revision_id, lossy)
0.200.1229 by Jelmer Vernooij
Provide CommitBuilder.any_changes.
271
        self.start_write_group()
0.294.1 by Jelmer Vernooij
Fix write group handling when creating commit builder fails.
272
        return builder
0.200.1224 by Jelmer Vernooij
provide explicit GitRepository.get_commit_builder.
273
0.200.1283 by Jelmer Vernooij
Provide Repository.get_file_graph() and Tree.get_file_revision().
274
    def get_file_graph(self):
0.200.1307 by Jelmer Vernooij
Formatting fixes, specify path to a couple more functions.
275
        return _mod_graph.Graph(GitFileParentProvider(
276
            self._file_change_scanner))
0.200.1283 by Jelmer Vernooij
Provide Repository.get_file_graph() and Tree.get_file_revision().
277
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
278
    def iter_files_bytes(self, desired_files):
279
        """Iterate through file versions.
280
281
        Files will not necessarily be returned in the order they occur in
282
        desired_files.  No specific order is guaranteed.
283
284
        Yields pairs of identifier, bytes_iterator.  identifier is an opaque
285
        value supplied by the caller as part of desired_files.  It should
286
        uniquely identify the file version in the caller's context.  (Examples:
287
        an index number or a TreeTransform trans_id.)
288
289
        bytes_iterator is an iterable of bytestrings for the file.  The
290
        kind of iterable and length of the bytestrings are unspecified, but for
291
        this implementation, it is a list of bytes produced by
292
        VersionedFile.get_record_stream().
293
294
        :param desired_files: a list of (file_id, revision_id, identifier)
295
            triples
296
        """
297
        per_revision = {}
298
        for (file_id, revision_id, identifier) in desired_files:
0.200.1307 by Jelmer Vernooij
Formatting fixes, specify path to a couple more functions.
299
            per_revision.setdefault(revision_id, []).append(
300
                (file_id, identifier))
7045.2.13 by Jelmer Vernooij
Fix some workingtree_4 tests.
301
        for revid, files in viewitems(per_revision):
0.200.1745 by Jelmer Vernooij
Fix iter_files_bytes.
302
            try:
303
                (commit_id, mapping) = self.lookup_bzr_revision_id(revid)
304
            except errors.NoSuchRevision:
305
                raise errors.RevisionNotPresent(revid, self)
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
306
            try:
307
                commit = self._git.object_store[commit_id]
308
            except KeyError:
309
                raise errors.RevisionNotPresent(revid, self)
310
            root_tree = commit.tree
311
            for fileid, identifier in files:
0.200.1715 by Jelmer Vernooij
Fix some more tests.
312
                try:
313
                    path = mapping.parse_file_id(fileid)
314
                except ValueError:
315
                    raise errors.RevisionNotPresent((fileid, revid), self)
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
316
                try:
317
                    obj = tree_lookup_path(
7045.4.1 by Jelmer Vernooij
Some brz-git fixes.
318
                        self._git.object_store.__getitem__, root_tree,
319
                        path.encode('utf-8'))
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
320
                    if isinstance(obj, tuple):
321
                        (mode, item_id) = obj
322
                        obj = self._git.object_store[item_id]
323
                except KeyError:
324
                    raise errors.RevisionNotPresent((fileid, revid), self)
325
                else:
7045.2.13 by Jelmer Vernooij
Fix some workingtree_4 tests.
326
                    if obj.type_name == b"tree":
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
327
                        yield (identifier, [])
7045.2.13 by Jelmer Vernooij
Fix some workingtree_4 tests.
328
                    elif obj.type_name == b"blob":
0.200.1233 by Jelmer Vernooij
Implement Repository.iter_files_bytes.
329
                        yield (identifier, obj.chunked)
330
                    else:
331
                        raise AssertionError("file text resolved to %r" % obj)
332
0.200.1533 by Jelmer Vernooij
Improve gather_stats.
333
    def gather_stats(self, revid=None, committers=None):
334
        """See Repository.gather_stats()."""
7143.15.2 by Jelmer Vernooij
Run autopep8.
335
        result = super(LocalGitRepository, self).gather_stats(
336
            revid, committers)
0.200.1533 by Jelmer Vernooij
Improve gather_stats.
337
        revs = []
338
        for sha in self._git.object_store:
339
            o = self._git.object_store[sha]
7045.2.13 by Jelmer Vernooij
Fix some workingtree_4 tests.
340
            if o.type_name == b"commit":
0.200.1533 by Jelmer Vernooij
Improve gather_stats.
341
                revs.append(o.id)
342
        result['revisions'] = len(revs)
343
        return result
344
0.252.46 by Jelmer Vernooij
Generate refs/bzr/* if not set yet.
345
    def _iter_revision_ids(self):
0.200.1021 by Jelmer Vernooij
Put testament sha1 in revisions.
346
        mapping = self.get_mapping()
0.252.21 by Jelmer Vernooij
Fix GitRepository.all_revision_ids() to find all revisions.
347
        for sha in self._git.object_store:
348
            o = self._git.object_store[sha]
349
            if not isinstance(o, Commit):
350
                continue
7268.1.2 by Jelmer Vernooij
Allow access to native git repositories, ignoring unknown hg fields.
351
            revid = mapping.revision_id_foreign_to_bzr(o)
352
            roundtrip_revid = mapping.get_revision_id(o)
353
            yield o.id, revid, (roundtrip_revid if revid != roundtrip_revid else None)
0.252.46 by Jelmer Vernooij
Generate refs/bzr/* if not set yet.
354
355
    def all_revision_ids(self):
0.200.1727 by Jelmer Vernooij
Change all_revision_ids type to list.
356
        ret = set()
0.200.1021 by Jelmer Vernooij
Put testament sha1 in revisions.
357
        for git_sha, revid, roundtrip_revid in self._iter_revision_ids():
358
            if roundtrip_revid:
359
                ret.add(roundtrip_revid)
0.200.1325 by Jelmer Vernooij
More test fixes.
360
            else:
361
                ret.add(revid)
0.200.1727 by Jelmer Vernooij
Change all_revision_ids type to list.
362
        return list(ret)
0.200.74 by Jelmer Vernooij
Implement Repository.all_revision_ids().
363
0.200.1552 by Jelmer Vernooij
Claim to support nested trees.
364
    def _get_parents(self, revid, no_alternates=False):
0.200.1756 by Jelmer Vernooij
Initial work on annotate support.
365
        if type(revid) != bytes:
0.200.1328 by Jelmer Vernooij
More test fixes.
366
            raise ValueError
367
        try:
0.200.1343 by Jelmer Vernooij
Update docstrings.
368
            (hexsha, mapping) = self.lookup_bzr_revision_id(revid)
0.200.1328 by Jelmer Vernooij
More test fixes.
369
        except errors.NoSuchRevision:
370
            return None
0.200.1552 by Jelmer Vernooij
Claim to support nested trees.
371
        # FIXME: Honor no_alternates setting
0.200.1328 by Jelmer Vernooij
More test fixes.
372
        try:
0.200.1553 by Jelmer Vernooij
Avoid using nonexistant method.
373
            commit = self._git.object_store[hexsha]
0.200.1328 by Jelmer Vernooij
More test fixes.
374
        except KeyError:
375
            return None
6965.1.1 by Jelmer Vernooij
Add basic support for horizoned history.
376
        ret = []
377
        for p in commit.parents:
378
            try:
379
                ret.append(self.lookup_foreign_revision_id(p, mapping))
380
            except KeyError:
381
                ret.append(mapping.revision_id_foreign_to_bzr(p))
382
        return ret
0.200.1328 by Jelmer Vernooij
More test fixes.
383
0.200.1552 by Jelmer Vernooij
Claim to support nested trees.
384
    def _get_parent_map_no_fallbacks(self, revids):
385
        return self.get_parent_map(revids, no_alternates=True)
386
387
    def get_parent_map(self, revids, no_alternates=False):
0.200.131 by Jelmer Vernooij
Fix all tests but two, use rich roots by default.
388
        parent_map = {}
389
        for revision_id in revids:
7143.15.2 by Jelmer Vernooij
Run autopep8.
390
            parents = self._get_parents(
391
                revision_id, no_alternates=no_alternates)
0.285.5 by Jelmer Vernooij
Fix import.
392
            if revision_id == _mod_revision.NULL_REVISION:
0.200.1329 by Jelmer Vernooij
Fix more tests.
393
                parent_map[revision_id] = ()
394
                continue
0.200.1328 by Jelmer Vernooij
More test fixes.
395
            if parents is None:
396
                continue
0.200.1324 by Jelmer Vernooij
More work on roundtripping support.
397
            if len(parents) == 0:
0.285.5 by Jelmer Vernooij
Fix import.
398
                parents = [_mod_revision.NULL_REVISION]
0.200.1094 by Jelmer Vernooij
Fix test_get_no_parents.
399
            parent_map[revision_id] = tuple(parents)
0.200.131 by Jelmer Vernooij
Fix all tests but two, use rich roots by default.
400
        return parent_map
401
0.200.1281 by Jelmer Vernooij
Provide Repository.get_known_graph_ancestry.
402
    def get_known_graph_ancestry(self, revision_ids):
403
        """Return the known graph for a set of revision ids and their ancestors.
404
        """
405
        pending = set(revision_ids)
406
        parent_map = {}
407
        while pending:
0.200.1328 by Jelmer Vernooij
More test fixes.
408
            this_parent_map = {}
409
            for revid in pending:
0.285.5 by Jelmer Vernooij
Fix import.
410
                if revid == _mod_revision.NULL_REVISION:
0.200.1328 by Jelmer Vernooij
More test fixes.
411
                    continue
412
                parents = self._get_parents(revid)
413
                if parents is not None:
414
                    this_parent_map[revid] = parents
0.200.1281 by Jelmer Vernooij
Provide Repository.get_known_graph_ancestry.
415
            parent_map.update(this_parent_map)
416
            pending = set()
7045.4.4 by Jelmer Vernooij
Fix more git tests.
417
            for values in viewvalues(this_parent_map):
418
                pending.update(values)
0.200.1281 by Jelmer Vernooij
Provide Repository.get_known_graph_ancestry.
419
            pending = pending.difference(parent_map)
420
        return _mod_graph.KnownGraph(parent_map)
421
0.200.43 by David Allouche
Ultra-experimental support for "bzr pull". No test. No sanity.
422
    def get_signature_text(self, revision_id):
0.386.1 by Jelmer Vernooij
Support signing commits.
423
        git_commit_id, mapping = self.lookup_bzr_revision_id(revision_id)
424
        try:
425
            commit = self._git.object_store[git_commit_id]
426
        except KeyError:
427
            raise errors.NoSuchRevision(self, revision_id)
428
        if commit.gpgsig is None:
429
            raise errors.NoSuchRevision(self, revision_id)
430
        return commit.gpgsig
0.200.43 by David Allouche
Ultra-experimental support for "bzr pull". No test. No sanity.
431
0.200.1244 by Jelmer Vernooij
Implement GitRepository.check.
432
    def check(self, revision_ids=None, callback_refs=None, check_repo=True):
433
        result = GitCheck(self, check_repo=check_repo)
434
        result.check(callback_refs)
435
        return result
436
0.257.1 by Jelmer Vernooij
use transport repo objects even for local access.
437
    def pack(self, hint=None, clean_obsolete_packs=False):
438
        self._git.object_store.pack_loose_objects()
439
0.200.650 by Jelmer Vernooij
Use standard names for lookup functions.
440
    def lookup_foreign_revision_id(self, foreign_revid, mapping=None):
0.200.124 by Jelmer Vernooij
Add lookup_revision_id stub.
441
        """Lookup a revision id.
0.200.676 by Jelmer Vernooij
Avoid iterating over all keys in the tdb database.
442
0.200.1508 by Jelmer Vernooij
Add docstring, use peel_sha.
443
        :param foreign_revid: Foreign revision id to look up
444
        :param mapping: Mapping to use (use default mapping if not specified)
445
        :raise KeyError: If foreign revision was not found
446
        :return: bzr revision id
0.200.124 by Jelmer Vernooij
Add lookup_revision_id stub.
447
        """
7018.3.2 by Jelmer Vernooij
Fix some git tests.
448
        if not isinstance(foreign_revid, bytes):
0.361.1 by Jelmer Vernooij
Don't use assert.
449
            raise TypeError(foreign_revid)
0.200.649 by Jelmer Vernooij
Make GitRevisions VF implementation behave as the interface expects.
450
        if mapping is None:
451
            mapping = self.get_mapping()
0.200.914 by Jelmer Vernooij
Fix tests.
452
        if foreign_revid == ZERO_SHA:
0.285.5 by Jelmer Vernooij
Fix import.
453
            return _mod_revision.NULL_REVISION
0.200.1508 by Jelmer Vernooij
Add docstring, use peel_sha.
454
        commit = self._git.object_store.peel_sha(foreign_revid)
0.200.1403 by Jelmer Vernooij
Cope with tags pointing at tree objects when cloning local git repositories.
455
        if not isinstance(commit, Commit):
456
            raise NotCommitError(commit.id)
7268.1.2 by Jelmer Vernooij
Allow access to native git repositories, ignoring unknown hg fields.
457
        revid = mapping.get_revision_id(commit)
0.200.1021 by Jelmer Vernooij
Put testament sha1 in revisions.
458
        # FIXME: check testament before doing this?
7268.1.2 by Jelmer Vernooij
Allow access to native git repositories, ignoring unknown hg fields.
459
        return revid
0.200.124 by Jelmer Vernooij
Add lookup_revision_id stub.
460
0.200.60 by Jelmer Vernooij
Support signature functions.
461
    def has_signature_for_revision_id(self, revision_id):
0.200.1343 by Jelmer Vernooij
Update docstrings.
462
        """Check whether a GPG signature is present for this revision.
463
464
        This is never the case for Git repositories.
465
        """
0.386.2 by Jelmer Vernooij
Support verifying signatures.
466
        try:
467
            self.get_signature_text(revision_id)
468
        except errors.NoSuchRevision:
469
            return False
470
        else:
471
            return True
472
473
    def verify_revision_signature(self, revision_id, gpg_strategy):
474
        """Verify the signature on a revision.
475
476
        :param revision_id: the revision to verify
477
        :gpg_strategy: the GPGStrategy object to used
478
479
        :return: gpg.SIGNATURE_VALID or a failed SIGNATURE_ value
480
        """
481
        from breezy import gpg
482
        with self.lock_read():
483
            git_commit_id, mapping = self.lookup_bzr_revision_id(revision_id)
484
            try:
485
                commit = self._git.object_store[git_commit_id]
486
            except KeyError:
487
                raise errors.NoSuchRevision(self, revision_id)
488
489
            if commit.gpgsig is None:
490
                return gpg.SIGNATURE_NOT_SIGNED, None
491
492
            without_sig = Commit.from_string(commit.as_raw_string())
493
            without_sig.gpgsig = None
494
7143.15.2 by Jelmer Vernooij
Run autopep8.
495
            (result, key, plain_text) = gpg_strategy.verify(
496
                without_sig.as_raw_string(), commit.gpgsig)
0.386.3 by Jelmer Vernooij
use new API.
497
            return (result, key)
0.200.60 by Jelmer Vernooij
Support signature functions.
498
0.200.913 by Jelmer Vernooij
Fix tests.
499
    def lookup_bzr_revision_id(self, bzr_revid, mapping=None):
0.200.1343 by Jelmer Vernooij
Update docstrings.
500
        """Lookup a bzr revision id in a Git repository.
501
502
        :param bzr_revid: Bazaar revision id
503
        :param mapping: Optional mapping to use
504
        :return: Tuple with git commit id, mapping that was used and supplement
505
            details
506
        """
0.200.105 by Jelmer Vernooij
Add common function for finding git commit by bzr revid.
507
        try:
7143.15.3 by Jelmer Vernooij
Fix pep8 issues in breezy.git.
508
            (git_sha, mapping) = mapping_registry.revision_id_bzr_to_foreign(
509
                bzr_revid)
0.200.105 by Jelmer Vernooij
Add common function for finding git commit by bzr revid.
510
        except errors.InvalidRevisionId:
0.200.913 by Jelmer Vernooij
Fix tests.
511
            if mapping is None:
512
                mapping = self.get_mapping()
0.252.6 by Jelmer Vernooij
Roundtripping support for revision ids works.
513
            try:
0.200.1307 by Jelmer Vernooij
Formatting fixes, specify path to a couple more functions.
514
                return (self._git.refs[mapping.revid_as_refname(bzr_revid)],
515
                        mapping)
0.252.6 by Jelmer Vernooij
Roundtripping support for revision ids works.
516
            except KeyError:
0.252.46 by Jelmer Vernooij
Generate refs/bzr/* if not set yet.
517
                # Update refs from Git commit objects
518
                # FIXME: Hitting this a lot will be very inefficient...
7143.22.2 by Jelmer Vernooij
use more context libs for progress bars.
519
                with ui.ui_factory.nested_progress_bar() as pb:
7143.15.3 by Jelmer Vernooij
Fix pep8 issues in breezy.git.
520
                    for i, (git_sha, revid, roundtrip_revid) in enumerate(
521
                            self._iter_revision_ids()):
0.200.1601 by Jelmer Vernooij
remove compatibility code for bzr < 2.5.
522
                        if not roundtrip_revid:
523
                            continue
524
                        pb.update("resolving revision id", i)
525
                        refname = mapping.revid_as_refname(roundtrip_revid)
526
                        self._git.refs[refname] = git_sha
527
                        if roundtrip_revid == bzr_revid:
528
                            return git_sha, mapping
0.200.913 by Jelmer Vernooij
Fix tests.
529
                raise errors.NoSuchRevision(self, bzr_revid)
0.200.1343 by Jelmer Vernooij
Update docstrings.
530
        else:
531
            return (git_sha, mapping)
0.200.105 by Jelmer Vernooij
Add common function for finding git commit by bzr revid.
532
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
533
    def get_revision(self, revision_id):
7018.3.7 by Jelmer Vernooij
Fix remaining git tests.
534
        if not isinstance(revision_id, bytes):
0.200.1101 by Jelmer Vernooij
Raise InvalidRevisionId on invalid type being specified to Repository.get_revision.
535
            raise errors.InvalidRevisionId(revision_id, self)
0.200.650 by Jelmer Vernooij
Use standard names for lookup functions.
536
        git_commit_id, mapping = self.lookup_bzr_revision_id(revision_id)
0.200.147 by Jelmer Vernooij
Merge new dulwich; fetching objects from local repository works now; they aren't converted yet though.
537
        try:
0.200.1552 by Jelmer Vernooij
Claim to support nested trees.
538
            commit = self._git.object_store[git_commit_id]
0.200.147 by Jelmer Vernooij
Merge new dulwich; fetching objects from local repository works now; they aren't converted yet though.
539
        except KeyError:
540
            raise errors.NoSuchRevision(self, revision_id)
0.200.1029 by Jelmer Vernooij
Use dictionary with verifiers rather than requiring testament3-sha1 everywhere.
541
        revision, roundtrip_revid, verifiers = mapping.import_commit(
0.200.1021 by Jelmer Vernooij
Put testament sha1 in revisions.
542
            commit, self.lookup_foreign_revision_id)
0.361.1 by Jelmer Vernooij
Don't use assert.
543
        if revision is None:
544
            raise AssertionError
0.200.1029 by Jelmer Vernooij
Use dictionary with verifiers rather than requiring testament3-sha1 everywhere.
545
        # FIXME: check verifiers ?
0.200.1021 by Jelmer Vernooij
Put testament sha1 in revisions.
546
        if roundtrip_revid:
547
            revision.revision_id = roundtrip_revid
0.200.43 by David Allouche
Ultra-experimental support for "bzr pull". No test. No sanity.
548
        return revision
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
549
550
    def has_revision(self, revision_id):
0.200.1119 by Jelmer Vernooij
Refactor repository initialization.
551
        """See Repository.has_revision."""
0.285.5 by Jelmer Vernooij
Fix import.
552
        if revision_id == _mod_revision.NULL_REVISION:
0.200.1122 by Jelmer Vernooij
has_revision(null:) should always return True.
553
            return True
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
554
        try:
0.200.902 by Jelmer Vernooij
Fix Repository.has_revision{s,}.
555
            git_commit_id, mapping = self.lookup_bzr_revision_id(revision_id)
0.200.130 by Jelmer Vernooij
Make most tree inspection tests succeed.
556
        except errors.NoSuchRevision:
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
557
            return False
0.200.902 by Jelmer Vernooij
Fix Repository.has_revision{s,}.
558
        return (git_commit_id in self._git)
559
560
    def has_revisions(self, revision_ids):
0.200.1119 by Jelmer Vernooij
Refactor repository initialization.
561
        """See Repository.has_revisions."""
0.200.913 by Jelmer Vernooij
Fix tests.
562
        return set(filter(self.has_revision, revision_ids))
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
563
0.200.1657 by Jelmer Vernooij
Implement iter_revisions.
564
    def iter_revisions(self, revision_ids):
0.200.1119 by Jelmer Vernooij
Refactor repository initialization.
565
        """See Repository.get_revisions."""
0.200.1657 by Jelmer Vernooij
Implement iter_revisions.
566
        for revid in revision_ids:
567
            try:
568
                rev = self.get_revision(revid)
569
            except errors.NoSuchRevision:
570
                rev = None
571
            yield (revid, rev)
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
572
573
    def revision_trees(self, revids):
0.200.1119 by Jelmer Vernooij
Refactor repository initialization.
574
        """See Repository.revision_trees."""
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
575
        for revid in revids:
576
            yield self.revision_tree(revid)
577
578
    def revision_tree(self, revision_id):
0.200.1119 by Jelmer Vernooij
Refactor repository initialization.
579
        """See Repository.revision_tree."""
0.287.6 by Jelmer Vernooij
Fix some more tests.
580
        if revision_id is None:
581
            raise ValueError('invalid revision id %s' % revision_id)
0.200.195 by Jelmer Vernooij
Return mapping in revision_id_bzr_to_foreign() as required by the interface.
582
        return GitRevisionTree(self, revision_id)
0.200.18 by John Arbash Meinel
Start splitting up the Git{Branch,Dir,Repository} into separate modules, etc.
583
0.285.4 by Jelmer Vernooij
Add get_deltas_for_revisoins implementation.
584
    def get_deltas_for_revisions(self, revisions, specific_fileids=None):
585
        """Produce a generator of revision deltas.
586
587
        Note that the input is a sequence of REVISIONS, not revision_ids.
588
        Trees will be held in memory until the generator exits.
589
        Each delta is relative to the revision's lefthand predecessor.
590
591
        :param specific_fileids: if not None, the result is filtered
592
          so that only those file-ids, their parents and their
593
          children are included.
594
        """
595
        # Get the revision-ids of interest
596
        required_trees = set()
597
        for revision in revisions:
598
            required_trees.add(revision.revision_id)
599
            required_trees.update(revision.parent_ids[:1])
600
0.200.1743 by Jelmer Vernooij
Fix some revision delta filtering.
601
        trees = dict((t.get_revision_id(), t) for
7143.15.2 by Jelmer Vernooij
Run autopep8.
602
                     t in self.revision_trees(required_trees))
0.285.4 by Jelmer Vernooij
Add get_deltas_for_revisoins implementation.
603
604
        # Calculate the deltas
605
        for revision in revisions:
606
            if not revision.parent_ids:
607
                old_tree = self.revision_tree(_mod_revision.NULL_REVISION)
608
            else:
609
                old_tree = trees[revision.parent_ids[0]]
0.200.1743 by Jelmer Vernooij
Fix some revision delta filtering.
610
            new_tree = trees[revision.revision_id]
611
            if specific_fileids is not None:
7143.15.2 by Jelmer Vernooij
Run autopep8.
612
                specific_files = [new_tree.id2path(
613
                    fid) for fid in specific_fileids]
0.200.1743 by Jelmer Vernooij
Fix some revision delta filtering.
614
            else:
615
                specific_files = None
7143.15.3 by Jelmer Vernooij
Fix pep8 issues in breezy.git.
616
            yield new_tree.changes_from(
617
                old_tree, specific_files=specific_files)
0.285.4 by Jelmer Vernooij
Add get_deltas_for_revisoins implementation.
618
0.200.108 by Jelmer Vernooij
Support bzr init --git.
619
    def set_make_working_trees(self, trees):
0.287.6 by Jelmer Vernooij
Fix some more tests.
620
        raise errors.UnsupportedOperation(self.set_make_working_trees, self)
0.200.108 by Jelmer Vernooij
Support bzr init --git.
621
0.200.276 by Jelmer Vernooij
Improve formatting.
622
    def fetch_objects(self, determine_wants, graph_walker, resolve_ext_ref,
7143.15.2 by Jelmer Vernooij
Run autopep8.
623
                      progress=None, limit=None):
0.286.6 by Jelmer Vernooij
Pass through limit argument.
624
        return self._git.fetch_objects(determine_wants, graph_walker, progress,
7143.15.2 by Jelmer Vernooij
Run autopep8.
625
                                       limit=limit)
0.200.138 by Jelmer Vernooij
Add initial infrastructure for accessing remote git repositories.
626
0.200.43 by David Allouche
Ultra-experimental support for "bzr pull". No test. No sanity.
627
0.200.289 by Jelmer Vernooij
Cope with new member variables in RepositoryFormat.
628
class GitRepositoryFormat(repository.RepositoryFormat):
0.200.429 by Jelmer Vernooij
get remote dpush to a point where we now what to send.
629
    """Git repository format."""
0.203.1 by Aaron Bentley
Make checkouts work
630
0.200.1294 by Jelmer Vernooij
Mark as not supporting versioned directories.
631
    supports_versioned_directories = False
0.429.2 by Jelmer Vernooij
Some more work on submodule support.
632
    supports_tree_reference = True
0.200.133 by Jelmer Vernooij
Unmark as deprecated.
633
    rich_root_data = True
0.200.1105 by Jelmer Vernooij
Don't claim to support leaving locks.
634
    supports_leaving_lock = False
0.200.1106 by Jelmer Vernooij
Claim to support fast deltas.
635
    fast_deltas = True
0.200.1123 by Jelmer Vernooij
Set more repository format flags.
636
    supports_funky_characters = True
0.200.1560 by Jelmer Vernooij
stacking is not supported.
637
    supports_external_lookups = False
0.200.1135 by Jelmer Vernooij
Set supports_full_versioned_files=False.
638
    supports_full_versioned_files = False
0.200.1162 by Jelmer Vernooij
Set RepositoryFormat.supports_revision_signatures.
639
    supports_revision_signatures = False
0.200.1383 by Jelmer Vernooij
Claim to not support nested repositories.
640
    supports_nesting_repositories = False
0.200.1166 by Jelmer Vernooij
Set GitRepositoryFormat.revision_graph_can_have_wrong_parents.
641
    revision_graph_can_have_wrong_parents = False
0.200.1493 by Jelmer Vernooij
Test fixes.
642
    supports_unreferenced_revisions = True
0.200.1665 by Jelmer Vernooij
Rename _matchingbzrdir to _matchingcnotroldir.
643
    supports_setting_revision_ids = False
0.200.1698 by Jelmer Vernooij
Update xfail.
644
    supports_storing_branch_nick = False
645
    supports_overriding_transport = False
0.200.1746 by Jelmer Vernooij
Mark as not supporting custom revision properties.
646
    supports_custom_revision_properties = False
0.396.1 by Jelmer Vernooij
Mark as not support per file revision recording.
647
    records_per_file_revision = False
0.200.71 by Jelmer Vernooij
Implement GitRepositoryFormat.get_format_description.
648
0.200.1083 by Jelmer Vernooij
Register repository format.
649
    @property
0.200.1665 by Jelmer Vernooij
Rename _matchingbzrdir to _matchingcnotroldir.
650
    def _matchingcontroldir(self):
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
651
        from .dir import LocalGitControlDirFormat
0.200.1083 by Jelmer Vernooij
Register repository format.
652
        return LocalGitControlDirFormat()
653
0.200.71 by Jelmer Vernooij
Implement GitRepositoryFormat.get_format_description.
654
    def get_format_description(self):
655
        return "Git Repository"
0.200.133 by Jelmer Vernooij
Unmark as deprecated.
656
0.200.1084 by Jelmer Vernooij
Support 'initializing' repositories in control directories.
657
    def initialize(self, controldir, shared=False, _internal=False):
0.200.1641 by Jelmer Vernooij
Use relative imports where possible.
658
        from .dir import GitDir
0.200.1084 by Jelmer Vernooij
Support 'initializing' repositories in control directories.
659
        if not isinstance(controldir, GitDir):
660
            raise errors.UninitializableFormat(self)
661
        return controldir.open_repository()
0.200.133 by Jelmer Vernooij
Unmark as deprecated.
662
663
    def check_conversion_target(self, target_repo_format):
664
        return target_repo_format.rich_root_data
0.200.536 by Jelmer Vernooij
Implement network name.
665
0.200.658 by Jelmer Vernooij
Provide right infrastructure for foreign repository tests from bzrlib.
666
    def get_foreign_tests_repository_factory(self):
0.200.1654 by Jelmer Vernooij
Fix test import.
667
        from .tests.test_repository import (
0.200.713 by Jelmer Vernooij
Improve formatting.
668
            ForeignTestsRepositoryFactory,
669
            )
0.200.658 by Jelmer Vernooij
Provide right infrastructure for foreign repository tests from bzrlib.
670
        return ForeignTestsRepositoryFactory()
671
0.200.536 by Jelmer Vernooij
Implement network name.
672
    def network_name(self):
6973.7.8 by Jelmer Vernooij
Fix more tests.
673
        return b"git"
6989.2.6 by Jelmer Vernooij
Run tests against brz-git interrepositories.
674
675
676
def get_extra_interrepo_test_combinations():
6986.2.2 by Jelmer Vernooij
Merge trunk.
677
    from ..bzr.groupcompress_repo import RepositoryFormat2a
6989.2.6 by Jelmer Vernooij
Run tests against brz-git interrepositories.
678
    from . import interrepo
679
    return [
7143.15.2 by Jelmer Vernooij
Run autopep8.
680
        (interrepo.InterLocalGitNonGitRepository,
681
         GitRepositoryFormat(), RepositoryFormat2a()),
682
        (interrepo.InterLocalGitLocalGitRepository,
683
         GitRepositoryFormat(), GitRepositoryFormat()),
684
        (interrepo.InterToLocalGitRepository,
685
         RepositoryFormat2a(), GitRepositoryFormat()),
6989.2.6 by Jelmer Vernooij
Run tests against brz-git interrepositories.
686
        ]