[PATCH] cleanupnode: do not use generator for node mapping

Boris Feld boris.feld at octobus.net
Sun Jul 9 16:49:04 UTC 2017


# HG changeset patch
# User Octobus <contact at octobus.net>
# Date 1499605879 -7200
#      Sun Jul 09 15:11:19 2017 +0200
# Node ID a6ed7f0670010e5a6551d736b00dc0bf7367bba8
# Parent  4672db164c986da4442bd864cd044512d975c3f2
# EXP-Topic fix-cleanup
cleanupnode: do not use generator for node mapping

The 'successors' part of the mappings used of be a tuple. This avoid issue from
code consuming the generator "by mistake". For example, an extension inspecting the
mapping content used to be able to iterate over the successors mapping without
consequence.

Since the mapping are small we do not expect any performance impact we use tuple
again for this.

diff -r 4672db164c98 -r a6ed7f067001 mercurial/scmutil.py
--- a/mercurial/scmutil.py	Sat Jun 24 15:29:42 2017 -0700
+++ b/mercurial/scmutil.py	Sun Jul 09 15:11:19 2017 +0200
@@ -638,7 +638,7 @@
             isobs = unfi.obsstore.successors.__contains__
             torev = unfi.changelog.rev
             sortfunc = lambda ns: torev(ns[0])
-            rels = [(unfi[n], (unfi[m] for m in s))
+            rels = [(unfi[n], tuple(unfi[m] for m in s))
                     for n, s in sorted(mapping.items(), key=sortfunc)
                     if s or not isobs(n)]
             obsolete.createmarkers(repo, rels, operation=operation)


More information about the Mercurial-devel mailing list