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