/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to fetch.py

MergeĀ upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
from bzrlib.trace import info
22
22
from bzrlib.tsort import topo_sort
23
23
 
 
24
from bzrlib.plugins.git import git
24
25
from bzrlib.plugins.git.repository import (
25
26
        LocalGitRepository, 
26
27
        GitRepository, 
28
29
        )
29
30
from bzrlib.plugins.git.remote import RemoteGitRepository
30
31
 
31
 
import dulwich as git
32
32
from dulwich.client import SimpleFetchGraphWalker
33
33
from dulwich.objects import Commit
34
34
 
36
36
 
37
37
 
38
38
class BzrFetchGraphWalker(object):
39
 
    """GraphWalker implementation that uses a Bazaar repository."""
40
39
 
41
40
    def __init__(self, repository, mapping):
42
41
        self.repository = repository
45
44
        self.heads = set(repository.all_revision_ids())
46
45
        self.parents = {}
47
46
 
48
 
    def __iter__(self):
49
 
        return iter(self.next, None)
50
 
 
51
47
    def ack(self, sha):
52
48
        revid = self.mapping.revision_id_foreign_to_bzr(sha)
53
49
        self.remove(revid)
68
64
            self.heads.update([p for p in ps if not p in self.done])
69
65
            try:
70
66
                self.done.add(ret)
71
 
                return self.mapping.revision_id_bzr_to_foreign(ret)[0]
 
67
                return self.mapping.revision_id_bzr_to_foreign(ret)
72
68
            except InvalidRevisionId:
73
69
                pass
74
70
        return None
136
132
    """
137
133
    # TODO: a more (memory-)efficient implementation of this
138
134
    objects = {}
139
 
    for i, (o, _) in enumerate(object_iter):
 
135
    for i, o in enumerate(object_iter):
140
136
        if pb is not None:
141
137
            pb.update("fetching objects", i, num_objects) 
142
138
        objects[o.id] = o
213
209
            if revision_id is None:
214
210
                ret = heads.values()
215
211
            else:
216
 
                ret = [mapping.revision_id_bzr_to_foreign(revision_id)[0]]
 
212
                ret = [mapping.revision_id_bzr_to_foreign(revision_id)]
217
213
            return [rev for rev in ret if not self.target.has_revision(mapping.revision_id_foreign_to_bzr(rev))]
218
214
        graph_walker = BzrFetchGraphWalker(self.target, mapping)
219
215
        create_pb = None
268
264
        if revision_id is None:
269
265
            determine_wants = lambda x: [y for y in x.values() if not y in r.object_store]
270
266
        else:
271
 
            args = [mapping.revision_id_bzr_to_foreign(revision_id)[0]]
 
267
            args = [mapping.revision_id_bzr_to_foreign(revision_id)]
272
268
            determine_wants = lambda x: [y for y in args if not y in r.object_store]
273
269
 
274
270
        graphwalker = SimpleFetchGraphWalker(r.heads().values(), r.get_parents)