Patchwork [5,of,5] log: rewrite --follow-first -rREV like --follow for consistency (BC)

login
register
mail settings
Submitter Yuya Nishihara
Date Jan. 11, 2018, 1:58 p.m.
Message ID <7c2c82f67697a0957afa.1515679124@mimosa>
Download mbox | patch
Permalink /patch/26690/
State Accepted
Headers show

Comments

Yuya Nishihara - Jan. 11, 2018, 1:58 p.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1512897933 -32400
#      Sun Dec 10 18:25:33 2017 +0900
# Node ID 7c2c82f67697a0957afaa9b4f450d7b03eaa9536
# Parent  438dde28f8693b822898903325d2567c5e618c4b
log: rewrite --follow-first -rREV like --follow for consistency (BC)

This helps fixing the "--follow -rREV PATH" issue.

.. bc::

   ``log --follow-first -rREV``, which is deprecated, now follows the first
   parent of merge revisions from the specified ``REV`` just like
   ``log --follow -rREV``.

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3405,7 +3405,11 @@  def log(ui, repo, *pats, **opts):
             _('FILE arguments are not compatible with --line-range option')
         )
 
-    if opts.get('follow') and opts.get('rev'):
+    if opts.get('follow_first') and opts.get('rev'):
+        opts['rev'] = [revsetlang.formatspec('reverse(_firstancestors(%lr))',
+                                             opts.get('rev'))]
+        del opts['follow_first']
+    elif opts.get('follow') and opts.get('rev'):
         opts['rev'] = [revsetlang.formatspec('reverse(::%lr)', opts.get('rev'))]
         del opts['follow']
 
diff --git a/tests/test-glog.t b/tests/test-glog.t
--- a/tests/test-glog.t
+++ b/tests/test-glog.t
@@ -2304,22 +2304,9 @@  changessincelatesttag with no prior tag
 Test --follow-first and forward --rev
 
   $ testlog --follow-first -r6 -r8 -r5 -r7 -r4
-  ['6', '8', '5', '7', '4']
-  (func
-    (symbol '_firstdescendants')
-    (func
-      (symbol 'rev')
-      (symbol '6')))
-  <filteredset
-    <baseset- [4, 5, 6, 7, 8]>,
-    <generatorsetasc+>>
-  --- log.nodes	* (glob)
-  +++ glog.nodes	* (glob)
-  @@ -1,3 +1,3 @@
-  -nodetag 6
-   nodetag 8
-   nodetag 7
-  +nodetag 6
+  ['reverse(_firstancestors((((6) or (8)) or ((5) or ((7) or (4))))))']
+  []
+  <generatorsetdesc->
 
 Test --follow and backward --rev
 
@@ -2331,15 +2318,9 @@  Test --follow and backward --rev
 Test --follow-first and backward --rev
 
   $ testlog --follow-first -r6 -r5 -r7 -r8 -r4
-  ['6', '5', '7', '8', '4']
-  (func
-    (symbol '_firstancestors')
-    (func
-      (symbol 'rev')
-      (symbol '6')))
-  <filteredset
-    <baseset- [4, 5, 6, 7, 8]>,
-    <generatorsetdesc+>>
+  ['reverse(_firstancestors((((6) or (5)) or ((7) or ((8) or (4))))))']
+  []
+  <generatorsetdesc->
 
 Test --follow with --rev of graphlog extension