Patchwork [2,of,2,v2] log: make --line-range and --graph options work together

login
register
mail settings
Submitter Denis Laxalde
Date Feb. 11, 2018, 6:05 p.m.
Message ID <ceacb9e94803aafae2f1.1518372326@marimba>
Download mbox | patch
Permalink /patch/27576/
State Accepted
Headers show

Comments

Denis Laxalde - Feb. 11, 2018, 6:05 p.m.
# HG changeset patch
# User Denis Laxalde <denis@laxalde.org>
# Date 1518369441 -3600
#      Sun Feb 11 18:17:21 2018 +0100
# Node ID ceacb9e94803aafae2f1a677ccaa63068c3c4ed7
# Parent  f994010b9f093a1645875b4e905fcf9d21a5eaa9
# EXP-Topic log/linerange-graph
log: make --line-range and --graph options work together

Thanks to recent refactorings by Yuya Nishihara
(f8ad57d24252::29b83c08afe0) we can now trivially enable --graph option
along with --line-range.

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3313,8 +3313,8 @@  def log(ui, repo, *pats, **opts):
        Use -L/--line-range FILE,M:N options to follow the history of lines
        from M to N in FILE. With -p/--patch only diff hunks affecting
        specified line range will be shown. This option requires --follow;
-       it can be specified multiple times. Currently, this option is not
-       compatible with --graph. This option is experimental.
+       it can be specified multiple times.
+       This option is experimental.
 
     .. note::
 
@@ -3421,14 +3421,12 @@  def log(ui, repo, *pats, **opts):
     repo = scmutil.unhidehashlikerevs(repo, opts.get('rev'), 'nowarn')
     revs, differ = logcmdutil.getrevs(repo, pats, opts)
 
-    if opts.get('graph'):
-        if linerange:
-            raise error.Abort(_('graph not supported with line range patterns'))
-        return logcmdutil.graphlog(ui, repo, revs, differ, opts)
-
     if linerange:
         revs, differ = logcmdutil.getlinerangerevs(repo, revs, opts)
 
+    if opts.get('graph'):
+        return logcmdutil.graphlog(ui, repo, revs, differ, opts)
+
     getrenamed = None
     if opts.get('copies'):
         endrev = None
diff --git a/tests/test-log-linerange.t b/tests/test-log-linerange.t
--- a/tests/test-log-linerange.t
+++ b/tests/test-log-linerange.t
@@ -173,8 +173,76 @@  Add some changes with two diff hunks
   +4
   
   $ hg log -f --graph -L foo,5:7 -p
-  abort: graph not supported with line range patterns
-  [255]
+  @  changeset:   5:cfdf972b3971
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     foo: 3 -> 3+ and 11+ -> 11-; bar: a -> a+
+  |
+  |  diff --git a/foo b/foo
+  |  --- a/foo
+  |  +++ b/foo
+  |  @@ -4,7 +4,7 @@
+  |   0
+  |    1
+  |   2+
+  |  -3
+  |  +3+
+  |   4
+  |   5
+  |   6
+  |
+  o  changeset:   4:eaec41c1a0c9
+  :  user:        test
+  :  date:        Thu Jan 01 00:00:00 1970 +0000
+  :  summary:     11 -> 11+; leading space before "1"
+  :
+  :  diff --git a/foo b/foo
+  :  --- a/foo
+  :  +++ b/foo
+  :  @@ -2,7 +2,7 @@
+  :   0
+  :   0
+  :   0
+  :  -1
+  :  + 1
+  :   2+
+  :   3
+  :   4
+  :
+  o  changeset:   2:63a884426fd0
+  :  user:        test
+  :  date:        Thu Jan 01 00:00:00 1970 +0000
+  :  summary:     2 -> 2+; added bar
+  :
+  :  diff --git a/foo b/foo
+  :  --- a/foo
+  :  +++ b/foo
+  :  @@ -3,6 +3,6 @@
+  :   0
+  :   0
+  :   1
+  :  -2
+  :  +2+
+  :   3
+  :   4
+  :
+  o  changeset:   0:5ae1f82b9a00
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     init
+  
+     diff --git a/foo b/foo
+     new file mode 100644
+     --- /dev/null
+     +++ b/foo
+     @@ -0,0 +1,5 @@
+     +0
+     +1
+     +2
+     +3
+     +4
+  
 
 With --template.