213
213
create_pb.finished()
215
215
def fetch(self, revision_id=None, pb=None, find_ghosts=False,
216
mapping=None, fetch_spec=None):
217
self.fetch_refs(revision_id=revision_id, pb=pb, find_ghosts=find_ghosts,
218
mapping=mapping, fetch_spec=fetch_spec)
220
def fetch_refs(self, revision_id=None, pb=None, find_ghosts=False,
221
mapping=None, fetch_spec=None):
217
222
if mapping is None:
218
223
mapping = self.source.get_mapping()
219
def determine_wants(heads):
220
if revision_id is None:
224
if revision_id is not None:
225
interesting_heads = [revision_id]
226
elif fetch_spec is not None:
227
interesting_heads = fetch_spec.heads
229
interesting_heads = None
231
def determine_wants(refs):
233
if interesting_heads is None:
234
ret = [sha for (ref, sha) in refs.iteritems() if not ref.endswith("^{}")]
223
ret = [mapping.revision_id_bzr_to_foreign(revision_id)[0]]
236
ret = [mapping.revision_id_bzr_to_foreign(revid)[0] for revid in interesting_heads]
224
237
return [rev for rev in ret if not self.target.has_revision(mapping.revision_id_foreign_to_bzr(rev))]
225
return self.fetch_objects(determine_wants, mapping, pb)
238
self.fetch_objects(determine_wants, mapping, pb)
228
242
def is_compatible(source, target):
246
260
self.fetch(revision_id, pb, find_ghosts=False)
248
262
def fetch(self, revision_id=None, pb=None, find_ghosts=False,
263
mapping=None, fetch_spec=None):
250
264
if mapping is None:
251
265
mapping = self.source.get_mapping()
252
266
def progress(text):
253
267
info("git: %s", text)
254
268
r = self.target._git
255
if revision_id is None:
256
determine_wants = lambda x: [y for y in x.values() if not y in r.object_store]
269
if revision_id is not None:
258
270
args = [mapping.revision_id_bzr_to_foreign(revision_id)[0]]
271
elif fetch_spec is not None:
272
args = [mapping.revision_id_bzr_to_foreign(revid)[0] for revid in fetch_spec.heads]
273
if fetch_spec is None and revision_id is None:
274
determine_wants = r.object_store.determine_wants_all
259
276
determine_wants = lambda x: [y for y in args if not y in r.object_store]
261
278
graphwalker = SimpleFetchGraphWalker(r.heads().values(), r.get_parents)