merge: prevent simplemerge from mutating label list
authorDurham Goode <durham@fb.com>
Thu, 08 May 2014 16:33:06 -0700
changeset 21272 4aeb7a6029ba
parent 21271 4adc090fa2fb
child 21273 20b8090d8125
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).
mercurial/simplemerge.py
--- a/mercurial/simplemerge.py	Fri May 09 08:44:53 2014 +0900
+++ b/mercurial/simplemerge.py	Thu May 08 16:33:06 2014 -0700
@@ -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: