From patchwork Fri Dec 4 19:38:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [5, of, 6, cg3, v3] changegroup: restate file linknode callback using generator expressions From: Augie Fackler X-Patchwork-Id: 11817 Message-Id: <6a50de91435bc616dd12.1449257934@arthedain.pit.corp.google.com> To: mercurial-devel@selenic.com Date: Fri, 04 Dec 2015 14:38:54 -0500 # HG changeset patch # User Augie Fackler # Date 1449247143 18000 # Fri Dec 04 11:39:03 2015 -0500 # Node ID 6a50de91435bc616dd127aab08cb3ff822409c8d # Parent d357e1c6126accf134cd5ad26c90a1728650bc2c # EXP-Topic cg3 changegroup: restate file linknode callback using generator expressions I think this is slightly clearer, and it nicely avoids an extra nested function. diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -698,14 +698,12 @@ class cg1packer(object): def linknodes(unused, fname): return fnodes.get(fname, {}) else: + cln = cl.node def linknodes(filerevlog, fname): llr = filerevlog.linkrev - def genfilenodes(): - for r in filerevlog: - linkrev = llr(r) - if linkrev in clrevs: - yield filerevlog.node(r), cl.node(linkrev) - return dict(genfilenodes()) + fln = filerevlog.node + revs = ((r, llr(r)) for r in filerevlog) + return dict((fln(r), cln(lr)) for r, lr in revs if lr in clrevs) changedfiles = set() for x in mfchangedfiles.itervalues():