[PATCH 5 of 6 cg3 v3] changegroup: restate file linknode callback using generator expressions

Augie Fackler raf at durin42.com
Fri Dec 4 13:38:54 CST 2015


# HG changeset patch
# User Augie Fackler <augie at google.com>
# 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():


More information about the Mercurial-devel mailing list