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

  • Committer: Jelmer Vernooij
  • Date: 2010-05-01 01:48:05 UTC
  • mto: (0.200.912 trunk)
  • mto: This revision was merged to the branch mainline in revision 6960.
  • Revision ID: jelmer@samba.org-20100501014805-w6wqrqh7azcr1oqv
Refactor revision finding code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
109
109
 
110
110
class InterToLocalGitRepository(InterToGitRepository):
111
111
 
 
112
    def __init__(self, source, target):
 
113
        super(InterToLocalGitRepository, self).__init__(source, target)
 
114
        self.target_store = self.target._git.object_store
 
115
 
112
116
    def missing_revisions(self, stop_revisions, check_revid):
113
117
        missing = []
114
118
        pb = ui.ui_factory.nested_progress_bar()
135
139
            new_refs[name] = gitid
136
140
        return revidmap, old_refs, new_refs
137
141
 
 
142
    def _find_missing_revs(self, stop_revisions):
 
143
        def check_revid(revid):
 
144
            if revid == NULL_REVISION:
 
145
                return True
 
146
            try:
 
147
                return (self.source_store._lookup_revision_sha1(revid) in self.target_store)
 
148
            except errors.NoSuchRevision:
 
149
                # Ghost, can't dpush
 
150
                return True
 
151
        return list(self.missing_revisions(stop_revisions, check_revid))
 
152
 
138
153
    def dfetch(self, stop_revisions):
139
154
        """Import the gist of the ancestry of a particular revision."""
140
155
        gitidmap = {}
141
156
        revidmap = {}
142
157
        self.source.lock_read()
143
158
        try:
144
 
            target_store = self.target._git.object_store
145
 
            def check_revid(revid):
146
 
                if revid == NULL_REVISION:
147
 
                    return True
148
 
                try:
149
 
                    return (self.source_store._lookup_revision_sha1(revid) in target_store)
150
 
                except errors.NoSuchRevision:
151
 
                    # Ghost, can't dpush
152
 
                    return True
153
 
            todo = list(self.missing_revisions(stop_revisions, check_revid))
 
159
            todo = self._find_missing_revs(stop_revisions)
154
160
            pb = ui.ui_factory.nested_progress_bar()
155
161
            try:
156
 
                object_generator = MissingObjectsIterator(self.source_store, self.source, pb)
 
162
                object_generator = MissingObjectsIterator(self.source_store,
 
163
                    self.source, pb)
157
164
                for old_bzr_revid, git_commit in object_generator.import_revisions(
158
165
                    todo):
159
166
                    new_bzr_revid = self.mapping.revision_id_foreign_to_bzr(git_commit)
160
167
                    revidmap[old_bzr_revid] = new_bzr_revid
161
168
                    gitidmap[old_bzr_revid] = git_commit
162
 
                target_store.add_objects(object_generator)
 
169
                self.target_store.add_objects(object_generator)
163
170
            finally:
164
171
                pb.finished()
165
172
        finally: