comparison mercurial/changegroup.py @ 23244:18cc87e4375a

merge with stable
author Matt Mackall <mpm@selenic.com>
date Mon, 10 Nov 2014 17:29:15 -0600
parents c58432685cff 5dcaed20b27c
children 6c1351352b6c
comparison
equal deleted inserted replaced
23243:c58432685cff 23244:18cc87e4375a
337 changedfiles.update(c[3]) 337 changedfiles.update(c[3])
338 # record the first changeset introducing this manifest version 338 # record the first changeset introducing this manifest version
339 mfs.setdefault(c[0], x) 339 mfs.setdefault(c[0], x)
340 return x 340 return x
341 341
342 for chunk in self.group(clnodes, cl, lookupcl, units=_('changesets'),
343 reorder=reorder):
344 yield chunk
345 progress(msgbundling, None)
346
342 # Callback for the manifest, used to collect linkrevs for filelog 347 # Callback for the manifest, used to collect linkrevs for filelog
343 # revisions. 348 # revisions.
344 # Returns the linkrev node (collected in lookupcl). 349 # Returns the linkrev node (collected in lookupcl).
345 def lookupmf(x): 350 def lookupmf(x):
346 clnode = mfs[x] 351 clnode = mfs[x]
348 mdata = mf.readfast(x) 353 mdata = mf.readfast(x)
349 for f, n in mdata.iteritems(): 354 for f, n in mdata.iteritems():
350 if f in changedfiles: 355 if f in changedfiles:
351 # record the first changeset introducing this filelog 356 # record the first changeset introducing this filelog
352 # version 357 # version
353 fnodes[f].setdefault(n, clnode) 358 fnodes.setdefault(f, {}).setdefault(n, clnode)
354 return clnode 359 return clnode
355 360
356 for chunk in self.group(clnodes, cl, lookupcl, units=_('changesets'),
357 reorder=reorder):
358 yield chunk
359 progress(msgbundling, None)
360
361 for f in changedfiles:
362 fnodes[f] = {}
363 mfnodes = self.prune(mf, mfs, commonrevs, source) 361 mfnodes = self.prune(mf, mfs, commonrevs, source)
364 for chunk in self.group(mfnodes, mf, lookupmf, units=_('manifests'), 362 for chunk in self.group(mfnodes, mf, lookupmf, units=_('manifests'),
365 reorder=reorder): 363 reorder=reorder):
366 yield chunk 364 yield chunk
367 progress(msgbundling, None) 365 progress(msgbundling, None)
375 def genfilenodes(): 373 def genfilenodes():
376 for r in filerevlog: 374 for r in filerevlog:
377 linkrev = llr(r) 375 linkrev = llr(r)
378 if linkrev in needed: 376 if linkrev in needed:
379 yield filerevlog.node(r), cl.node(linkrev) 377 yield filerevlog.node(r), cl.node(linkrev)
380 fnodes[fname] = dict(genfilenodes()) 378 return dict(genfilenodes())
381 return fnodes.get(fname, {}) 379 return fnodes.get(fname, {})
382 380
383 for chunk in self.generatefiles(changedfiles, linknodes, commonrevs, 381 for chunk in self.generatefiles(changedfiles, linknodes, commonrevs,
384 source): 382 source):
385 yield chunk 383 yield chunk