# HG changeset patch # User Matt Mackall # Date 1300668208 18000 # Node ID c4706accf3102f9c9ee3f524b935196342979dfd # Parent ed913fd7837b35a69db536edec1ae48ee728b9cb changegroupsubset: use manifest.readfast to simplify collector diff -r ed913fd7837b -r c4706accf310 mercurial/localrepo.py --- a/mercurial/localrepo.py Sun Mar 20 19:43:28 2011 -0500 +++ b/mercurial/localrepo.py Sun Mar 20 19:43:28 2011 -0500 @@ -1473,25 +1473,11 @@ def collect(mnode): r = mf.rev(mnode) clnode = mfs[mnode] - if mf.deltaparent(r) in mf.parentrevs(r): - # If the previous rev is one of the parents, - # we only need to see a diff. - deltamf = mf.readdelta(mnode) - # For each line in the delta - for f, fnode in deltamf.iteritems(): - # And if the file is in the list of files we care - # about. - if f in changedfiles: - # Create the set of filenodes for the file if - # there isn't one already. - fnodes.setdefault(f, {}).setdefault(fnode, clnode) - else: - # Otherwise we need a full manifest. - m = mf.read(mnode) - # For every file in we care about. - for f in changedfiles: - if f in m: - fnodes.setdefault(f, {}).setdefault(m[f], clnode) + mdata = mf.readfast(mnode) + for f in changedfiles: + if f in mdata: + fnodes.setdefault(f, {}).setdefault(mdata[f], clnode) + return collect # If we determine that a particular file or manifest node must be a