merge: show list of bids for each file in bid-merge in ui.debug()
authorPulkit Goyal <7895pulkit@gmail.com>
Wed, 26 Aug 2020 17:20:53 +0530
changeset 45459 ccd3bf4490c1
parent 45458 4532e7ebde4d
child 45460 4b582a93316a
merge: show list of bids for each file in bid-merge in ui.debug() Earlier, we were showing the list of bids only when we were ambiguously picking. However, the cases where we unambiguously picked a side may not always be correct and need to be fixed. Having list of bids for all files will be helpful in debugging. Differential Revision: https://phab.mercurial-scm.org/D8966
mercurial/merge.py
tests/test-merge-criss-cross.t
--- a/mercurial/merge.py	Mon Sep 14 19:39:51 2020 +0900
+++ b/mercurial/merge.py	Wed Aug 26 17:20:53 2020 +0530
@@ -1157,6 +1157,11 @@
         )
         mresult = mergeresult()
         for f, bids in sorted(fbids.items()):
+            if repo.ui.debugflag:
+                repo.ui.debug(b" list of bids for %s:\n" % f)
+                for m, l in sorted(bids.items()):
+                    for _f, args, msg in l:
+                        repo.ui.debug(b'   %s -> %s\n' % (msg, m))
             # bids is a mapping from action method to list af actions
             # Consensus?
             if len(bids) == 1:  # all bids are the same kind of method
--- a/tests/test-merge-criss-cross.t	Mon Sep 14 19:39:51 2020 +0900
+++ b/tests/test-merge-criss-cross.t	Wed Aug 26 17:20:53 2020 +0530
@@ -150,7 +150,13 @@
    f2: remote unchanged -> k
   
   auction for merging merge bids (2 ancestors)
+   list of bids for f1:
+     remote is newer -> g
+     versions differ -> m
    f1: picking 'get' action
+   list of bids for f2:
+     remote unchanged -> k
+     versions differ -> m
    f2: picking 'keep' action
   end of auction
   
@@ -193,7 +199,13 @@
    f2: remote is newer -> g
   
   auction for merging merge bids (2 ancestors)
+   list of bids for f1:
+     remote unchanged -> k
+     versions differ -> m
    f1: picking 'keep' action
+   list of bids for f2:
+     remote is newer -> g
+     versions differ -> m
    f2: picking 'get' action
   end of auction
   
@@ -258,7 +270,13 @@
    f2: remote unchanged -> k
   
   auction for merging merge bids (2 ancestors)
+   list of bids for f1:
+     remote is newer -> g
+     versions differ -> m
    f1: picking 'get' action
+   list of bids for f2:
+     remote unchanged -> k
+     versions differ -> m
    f2: picking 'keep' action
   end of auction
   
@@ -431,8 +449,15 @@
    d2/b: remote created -> g
   
   auction for merging merge bids (2 ancestors)
+   list of bids for d1/a:
+     other deleted -> r
    d1/a: consensus for r
+   list of bids for d1/b:
+     other deleted -> r
    d1/b: consensus for r
+   list of bids for d2/b:
+     remote created -> g
+     remote created -> g
    d2/b: consensus for g
   end of auction