evovle: remove redundancy in evolve output
authorSushil khanchi <sushilkhanchi97@gmail.com>
Fri, 21 Sep 2018 15:52:53 +0530
changeset 4122 4eb3877540f1
parent 4120 eea339cf4d30
child 4126 099e264bf3be
evovle: remove redundancy in evolve output Copying the discription of this redundancy issue given by Pierre Yves David: When running `hg evolve` to stabilize orphan changeset output about the currently stabilized changeset is issued. For example: $ hg evolve move:[3] a3 atop:[4] a2 working directory is now at 7c5649f73d11 This output can become quite repetitive when orphan are stabilized atop each other. For example: $ hg evolve --all move:[8] dansk 2! atop:[10] dansk! merging main-file-1 move:[9] dansk 3! atop:[11] dansk 2! In this case it would be smoother to issue: $ hg evolve --all move:[8] dansk 2! atop:[10] dansk! merging main-file-1 move:[9] dansk 3! Since we are moving "dansk 3!" atop the changeset we just stabilized. When adding this be careful that we still want to issue the "atop" message in various cases: 1. first changesets in a stack 2. when the orphan is not stabilized atop previous one 3. when using hg evolve --continue to resume an evolution So, I have made the changes which also respect above listed three points. And changes in tests/test-evovle*.t reflecting the changed behavior.
CHANGELOG
hgext3rd/evolve/evolvecmd.py
tests/test-evolve-abort-orphan.t
tests/test-evolve-content-divergence.t
tests/test-evolve-continue.t
tests/test-evolve-issue5832.t
tests/test-evolve-noupdate.t
tests/test-evolve-order.t
tests/test-evolve-orphan-merge.t
tests/test-evolve-stop-orphan.t
tests/test-evolve-topic.t
tests/test-evolve.t
tests/test-split.t
--- a/CHANGELOG	Tue Sep 18 02:14:10 2018 +0200
+++ b/CHANGELOG	Fri Sep 21 15:52:53 2018 +0530
@@ -1,6 +1,11 @@
 Changelog
 =========
 
+8.2.1 - in progress
+-------------------
+
+  * evolve: avoid redundant output when handling linear orphans
+
 8.2.1 -- 2018-09-14
 -------------------
 
--- a/hgext3rd/evolve/evolvecmd.py	Tue Sep 18 02:14:10 2018 +0200
+++ b/hgext3rd/evolve/evolvecmd.py	Fri Sep 21 15:52:53 2018 +0530
@@ -53,7 +53,7 @@
 abortmessage = _("see `hg help evolve.interrupted`\n")
 
 def _solveone(ui, repo, ctx, evolvestate, dryrun, confirm,
-              progresscb, category):
+              progresscb, category, lastsolved=None):
     """Resolve the troubles affecting one revision
 
     returns a tuple (bool, newnode) where,
@@ -68,8 +68,8 @@
         lock = repo.lock()
         tr = repo.transaction("evolve")
         if 'orphan' == category:
-            result = _solveunstable(ui, repo, ctx, evolvestate,
-                                    dryrun, confirm, progresscb)
+            result = _solveunstable(ui, repo, ctx, evolvestate, dryrun, confirm,
+                                    progresscb, lastsolved=lastsolved)
         elif 'phasedivergent' == category:
             result = _solvephasedivergence(ui, repo, ctx, evolvestate,
                                            dryrun, confirm, progresscb)
@@ -84,7 +84,7 @@
         lockmod.release(tr, lock, wlock)
 
 def _solveunstable(ui, repo, orig, evolvestate, dryrun=False, confirm=False,
-                   progresscb=None):
+                   progresscb=None, lastsolved=None):
     """ Tries to stabilize the changeset orig which is orphan.
 
     returns a tuple (bool, newnode) where,
@@ -158,8 +158,9 @@
     if not ui.quiet or confirm:
         repo.ui.write(_('move:'), label='evolve.operation')
         displayer.show(orig)
-        repo.ui.write(_('atop:'))
-        displayer.show(target)
+        if lastsolved is None or target != repo[lastsolved]:
+            repo.ui.write(_('atop:'))
+            displayer.show(target)
     if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y':
             raise error.Abort(_('evolve aborted by user'))
     if progresscb:
@@ -1566,14 +1567,19 @@
                      'command': 'evolve', 'orphanmerge': False,
                      'bookmarkchanges': [], 'temprevs': [], 'obsmarkers': []}
         evolvestate.addopts(stateopts)
+        # lastsolved: keep track of successor of last troubled cset we evolved
+        # to confirm that if atop msg should be suppressed to remove redundancy
+        lastsolved = None
         for rev in revs:
             curctx = repo[rev]
             progresscb()
-            ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt, confirmopt,
-                            progresscb, targetcat)
+            ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt,
+                            confirmopt, progresscb, targetcat,
+                            lastsolved=lastsolved)
             seen += 1
             if ret[0]:
                 evolvestate['replacements'][curctx.node()] = ret[1]
+                lastsolved = ret[1]
             else:
                 evolvestate['skippedrevs'].append(curctx.node())
 
@@ -1718,15 +1724,21 @@
             category = evolvestate['category']
             confirm = evolvestate['confirm']
             unfi = repo.unfiltered()
+            # lastsolved: keep track of successor of last troubled cset we
+            # evolved to confirm that if atop msg should be suppressed to remove
+            # redundancy
+            lastsolved = None
             for rev in evolvestate['revs']:
                 # XXX: prevent this lookup by storing nodes instead of revnums
                 curctx = unfi[rev]
                 if (curctx.node() not in evolvestate['replacements'] and
                     curctx.node() not in evolvestate['skippedrevs']):
                     newnode = _solveone(ui, repo, curctx, evolvestate, False,
-                                        confirm, progresscb, category)
+                                        confirm, progresscb, category,
+                                        lastsolved=lastsolved)
                     if newnode[0]:
                         evolvestate['replacements'][curctx.node()] = newnode[1]
+                        lastsolved = newnode[1]
                     else:
                         evolvestate['skippedrevs'].append(curctx.node())
         return
--- a/tests/test-evolve-abort-orphan.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-abort-orphan.t	Fri Sep 21 15:52:53 2018 +0530
@@ -157,7 +157,6 @@
   move:[2] added b
   atop:[7] added a
   move:[5] added c
-  atop:[8] added b
   merging c
   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
@@ -485,7 +484,6 @@
   move:[2] added b
   atop:[4] added a
   move:[3] added c
-  atop:[5] added b
   merging c
   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-content-divergence.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-content-divergence.t	Fri Sep 21 15:52:53 2018 +0530
@@ -378,7 +378,6 @@
   move:[3] added c
   atop:[8] added b
   move:[4] added d
-  atop:[9] added c
   working directory is now at 4ae4427ee9f8
   $ hg glog
   @  10:4ae4427ee9f8 added d
@@ -819,9 +818,7 @@
   move:[2] added b
   atop:[6] watbar to a
   move:[3] added c
-  atop:[7] added b
   move:[4] added d
-  atop:[8] added c
   working directory is now at 15c781f93cac
   $ hg glog
   @  9:15c781f93cac added d
@@ -845,9 +842,7 @@
   move:[2] added b
   atop:[5] watbar to a
   move:[3] added c
-  atop:[6] added b
   move:[4] added d
-  atop:[7] added c
   working directory is now at c72d2885eb51
   $ hg glog
   @  8:c72d2885eb51 added d
--- a/tests/test-evolve-continue.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-continue.t	Fri Sep 21 15:52:53 2018 +0530
@@ -166,7 +166,6 @@
   move:[5] added c
   atop:[10] added b
   move:[8] added d
-  atop:[11] added c
   working directory is now at 6642d2c9176e
 
   $ hg glog
@@ -237,7 +236,6 @@
   move:[12] added d
   atop:[16] added c
   move:[13] added f
-  atop:[17] added d
   merging f
   warning: conflicts while merging f! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
@@ -252,7 +250,6 @@
   move:[14] added g
   atop:[18] added f
   move:[15] added h
-  atop:[19] added g
   merging h
   warning: conflicts while merging h! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-issue5832.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-issue5832.t	Fri Sep 21 15:52:53 2018 +0530
@@ -117,7 +117,6 @@
   move:[2] added b
   atop:[5] added a
   move:[4] merge commit
-  atop:[8] added b
   ancestor '7235ef625ea3' split over multiple topological branches.
   choose an evolve destination:
   0: [62fb70414f99] added c
@@ -259,7 +258,6 @@
   move:[2] added b
   atop:[6] added a
   move:[4] merge commit
-  atop:[9] added b
   ancestor 'cdf2ea1b9312' split over multiple topological branches.
   choose an evolve destination:
   0: [62fb70414f99] added c
--- a/tests/test-evolve-noupdate.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-noupdate.t	Fri Sep 21 15:52:53 2018 +0530
@@ -64,7 +64,6 @@
   move:[3] added c
   atop:[5] added b
   move:[4] added d
-  atop:[6] added c
 
   $ hg glog
   o  7:b6b20b8eefdc added d
@@ -108,9 +107,7 @@
   move:[5] added b
   atop:[8] added a
   move:[6] added c
-  atop:[9] added b
   move:[7] added d
-  atop:[10] added c
   working directory is now at 12c720cb3782
 
   $ hg glog
--- a/tests/test-evolve-order.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-order.t	Fri Sep 21 15:52:53 2018 +0530
@@ -62,7 +62,6 @@
   move:[2] add _b
   atop:[4] add _a
   move:[3] add _c
-  atop:[5] add _b
   working directory is now at 52b8f9b04f83
 
 evolve --rev reorders the rev to solve instability. Harder case, obsolescence
@@ -106,9 +105,7 @@
   move:[10] bprime
   atop:[11] asecond
   move:[6] add _c
-  atop:[12] bprime
   move:[7] add _d
-  atop:[13] add _c
   working directory is now at 739f18ac1d03
   $ hg log -G
   @  14:739f18ac1d03@default(draft) add _d
@@ -214,7 +211,6 @@
   move:[17] add c3_
   atop:[28] add c2prime
   move:[18] add c4_
-  atop:[30] add c3_
   working directory is now at 35e7b797ace5
   $ hg log -G -r "desc(_d)::"
   @  31:35e7b797ace5@default(draft) add c4_
--- a/tests/test-evolve-orphan-merge.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-orphan-merge.t	Fri Sep 21 15:52:53 2018 +0530
@@ -350,7 +350,6 @@
   move:[16] added m
   atop:[20] added l
   move:[19] merge commit
-  atop:[21] added m
   working directory is now at a446ad3e6700
 
   $ hg glog
--- a/tests/test-evolve-stop-orphan.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-stop-orphan.t	Fri Sep 21 15:52:53 2018 +0530
@@ -242,9 +242,7 @@
   move:[1] added a
   atop:[7] added hgignore
   move:[2] added b
-  atop:[8] added a
   move:[5] added c
-  atop:[9] added b
   merging c
   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
@@ -357,7 +355,6 @@
   move:[9] added b
   atop:[12] added a
   move:[10] added c
-  atop:[13] added b
   merging c
   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-evolve-topic.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve-topic.t	Fri Sep 21 15:52:53 2018 +0530
@@ -127,7 +127,6 @@
   move:[4] add eee
   atop:[10] add ddd
   move:[11] add fff
-  atop:[12] add eee
   working directory is now at 070c5573d8f9
   $ hg log -G
   @  13 - {foo} 070c5573d8f9 add fff (draft)
@@ -164,11 +163,8 @@
   move:[6] add ggg
   atop:[13] add fff
   move:[7] add hhh
-  atop:[14] add ggg
   move:[8] add iii
-  atop:[15] add hhh
   move:[9] add jjj
-  atop:[16] add iii
   working directory is now at 9bf430c106b7
   $ hg log -G
   @  17 - {bar} 9bf430c106b7 add jjj (draft)
--- a/tests/test-evolve.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-evolve.t	Fri Sep 21 15:52:53 2018 +0530
@@ -468,7 +468,6 @@
   atop:[10] dansk!
   merging main-file-1
   move:[9] dansk 3!
-  atop:[11] dansk 2!
   merging main-file-1
   working directory is now at 96abb1319a47
   $ hg log -G
@@ -1291,7 +1290,6 @@
   move:[20] add j2
   atop:[23] add j1
   move:[21] add j3
-  atop:[24] add j2
   working directory is now at 0d9203b74542
   $ glog -r "0cf3707e8971::"
   @  25:0d9203b74542@default(draft) add j3
@@ -1465,7 +1463,6 @@
   move:[35] will be evolved safely
   atop:[37] amended
   move:[36] will cause conflict at evolve
-  atop:[38] will be evolved safely
   merging newfile
   warning: conflicts while merging newfile! (edit, then use 'hg resolve --mark')
   fix conflicts and see `hg help evolve.interrupted`
--- a/tests/test-split.t	Tue Sep 18 02:14:10 2018 +0200
+++ b/tests/test-split.t	Fri Sep 21 15:52:53 2018 +0530
@@ -151,7 +151,6 @@
   move:[5] split1
   atop:[7] _cprim
   move:[6] split2
-  atop:[8] split1
   working directory is now at * (glob)
   $ hg log -r "desc(_cprim)" -v -p
   changeset:   7:b434287e665c
@@ -219,7 +218,6 @@
   move:[8] split1
   atop:[11] split4
   move:[9] split2
-  atop:[12] split1
   working directory is now at d74c6715e706
   $ hg log -G
   @  changeset:   13:d74c6715e706