[PATCH 1 of 5] merge: prevent simplemerge from mutating label list

Durham Goode durham at fb.com
Thu May 8 19:33:26 CDT 2014


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1399591986 25200
#      Thu May 08 16:33:06 2014 -0700
# Node ID 86c73023576a450fd7c61a22cdb9fb82ad504e4b
# Parent  62a2749895e4151f766a4243fa870b1ddd7386d0
merge: prevent simplemerge from mutating label list

simplemerge was using list.pop() to remove items from the labels list. This
mutated the list and made it unusable by other calls (for instance, it might be
used in both the premerge and actual merge stages).

diff --git a/mercurial/simplemerge.py b/mercurial/simplemerge.py
--- a/mercurial/simplemerge.py
+++ b/mercurial/simplemerge.py
@@ -416,11 +416,11 @@
     name_a = local
     name_b = other
     labels = opts.get('label', [])
-    if labels:
-        name_a = labels.pop(0)
-    if labels:
-        name_b = labels.pop(0)
-    if labels:
+    if len(labels) > 0:
+        name_a = labels[0]
+    if len(labels) > 1:
+        name_b = labels[1]
+    if len(labels) > 2:
         raise util.Abort(_("can only specify two labels."))
 
     try:


More information about the Mercurial-devel mailing list