/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 converter.py

Partially fix pull.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
import bzrlib
20
20
 
 
21
from bzrlib import ui
 
22
 
21
23
from bzrlib.errors import NoSuchRevision
22
24
 
23
25
from bzrlib.plugins.git.mapping import (
26
28
    )
27
29
from bzrlib.plugins.git.shamap import GitShaMap
28
30
 
 
31
from dulwich.objects import (
 
32
    Blob,
 
33
    )
 
34
 
29
35
 
30
36
class GitObjectConverter(object):
31
37
 
38
44
        self._idmap = GitShaMap(self.repository._transport)
39
45
 
40
46
    def _update_sha_map(self):
41
 
        all_revids = set(self.repository.all_revision_ids())
 
47
        all_revids = self.repository.all_revision_ids()
 
48
        graph = self.repository.get_graph()
42
49
        present_revids = set(self._idmap.revids())
43
 
        missing = all_revids - present_revids
44
 
        for revid in missing:
45
 
            self._update_sha_map_revision(revid)
46
 
 
47
 
    def _parent_lookup(self, sha):
48
 
        raise NotImplementedError(self._parent_lookup)
 
50
        pb = ui.ui_factory.nested_progress_bar()
 
51
        try:
 
52
            for i, revid in enumerate(graph.iter_topo_order(all_revids)):
 
53
                if revid in present_revids:
 
54
                    continue
 
55
                pb.update("updating git map", i, len(all_revids))
 
56
                self._update_sha_map_revision(revid)
 
57
        finally:
 
58
            pb.finished()
49
59
 
50
60
    def _update_sha_map_revision(self, revid):
51
61
        inv = self.repository.get_inventory(revid)
59
69
            else:
60
70
                self._idmap.add_entry(sha, "tree", (ie.file_id, ie.revision))
61
71
        rev = self.repository.get_revision(revid)
62
 
        commit_obj = revision_to_commit(rev, tree_sha, self._parent_lookup)
63
 
        self._idmap.add_entry(commit_obj.sha(), "commit", (revid, tree_sha))
 
72
        commit_obj = revision_to_commit(rev, tree_sha, self._idmap._parent_lookup)
 
73
        self._idmap.add_entry(commit_obj.sha().hexdigest(), "commit", (revid, tree_sha))
64
74
 
65
75
    def _get_blob(self, fileid, revision):
66
76
        text = self.repository.texts.get_record_stream([(fileid, revision)], "unordered", True).next().get_bytes_as("fulltext")
73
83
 
74
84
    def _get_commit(self, revid, tree_sha):
75
85
        rev = self.repository.get_revision(revid)
76
 
        return revision_to_commit(rev, tree_sha, self._parent_lookup)
 
86
        return revision_to_commit(rev, tree_sha, self._idmap._parent_lookup)
77
87
 
78
88
    def __getitem__(self, sha):
79
89
        # See if sha is in map