110
110
class InterToLocalGitRepository(InterToGitRepository):
112
def __init__(self, source, target):
113
super(InterToLocalGitRepository, self).__init__(source, target)
114
self.target_store = self.target._git.object_store
112
116
def missing_revisions(self, stop_revisions, check_revid):
114
118
pb = ui.ui_factory.nested_progress_bar()
135
139
new_refs[name] = gitid
136
140
return revidmap, old_refs, new_refs
142
def _find_missing_revs(self, stop_revisions):
143
def check_revid(revid):
144
if revid == NULL_REVISION:
147
return (self.source_store._lookup_revision_sha1(revid) in self.target_store)
148
except errors.NoSuchRevision:
151
return list(self.missing_revisions(stop_revisions, check_revid))
138
153
def dfetch(self, stop_revisions):
139
154
"""Import the gist of the ancestry of a particular revision."""
142
157
self.source.lock_read()
144
target_store = self.target._git.object_store
145
def check_revid(revid):
146
if revid == NULL_REVISION:
149
return (self.source_store._lookup_revision_sha1(revid) in target_store)
150
except errors.NoSuchRevision:
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()
156
object_generator = MissingObjectsIterator(self.source_store, self.source, pb)
162
object_generator = MissingObjectsIterator(self.source_store,
157
164
for old_bzr_revid, git_commit in object_generator.import_revisions(
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)