[PATCH 1 of 2 V2] diff: rename --relative option to --root

Sean Farley sean at farley.io
Thu Mar 26 18:14:58 UTC 2015


# HG changeset patch
# User Sean Farley <sean at farley.io>
# Date 1427309715 25200
#      Wed Mar 25 11:55:15 2015 -0700
# Node ID 3769372acb363c945b444a89dbb510b1c49fa7af
# Parent  98042b0e19f9a04be3270cecb07915eac3a515cf
diff: rename --relative option to --root

The diff output format is unable to express files outside the directory so it
makes sense to name this option --root instead of --relative.

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1006,20 +1006,20 @@ def export(repo, revs, template='hg-%h.p
     for seqno, rev in enumerate(revs):
         single(rev, seqno + 1, fp)
 
 def diffordiffstat(ui, repo, diffopts, node1, node2, match,
                    changes=None, stat=False, fp=None, prefix='',
-                   relative='', listsubrepos=False):
+                   root='', listsubrepos=False):
     '''show diff or diffstat.'''
     if fp is None:
         write = ui.write
     else:
         def write(s, **kw):
             fp.write(s)
 
-    if relative:
-        relroot = pathutil.canonpath(repo.root, repo.getcwd(), relative)
+    if root:
+        relroot = pathutil.canonpath(repo.root, repo.getcwd(), root)
     else:
         relroot = ''
     if relroot != '':
         # XXX relative roots currently don't work if the root is within a
         # subrepo
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -146,11 +146,11 @@ diffopts2 = [
     ('', 'reverse', None, _('produce a diff that undoes the changes')),
     ] + diffwsopts + [
     ('U', 'unified', '',
      _('number of lines of context to show'), _('NUM')),
     ('', 'stat', None, _('output diffstat-style summary of changes')),
-    ('', 'relative', '', _('produce diffs relative to subdirectory'), _('DIR')),
+    ('', 'root', '', _('produce diffs relative to subdirectory'), _('DIR')),
 ]
 
 mergetoolopts = [
     ('t', 'tool', '', _('specify merge tool')),
 ]
@@ -3169,11 +3169,11 @@ def diff(ui, repo, *pats, **opts):
 
     diffopts = patch.diffallopts(ui, opts)
     m = scmutil.match(repo[node2], pats, opts)
     cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat,
                            listsubrepos=opts.get('subrepos'),
-                           relative=opts.get('relative'))
+                           root=opts.get('root'))
 
 @command('^export',
     [('o', 'output', '',
      _('print output to file with formatted name'), _('FORMAT')),
     ('', 'switch-parent', None, _('diff against the second parent')),
diff --git a/tests/test-completion.t b/tests/test-completion.t
--- a/tests/test-completion.t
+++ b/tests/test-completion.t
@@ -201,11 +201,11 @@ Show all commands + options
   $ hg debugcommands
   add: include, exclude, subrepos, dry-run
   annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, ignore-all-space, ignore-space-change, ignore-blank-lines, include, exclude, template
   clone: noupdate, updaterev, rev, branch, pull, uncompressed, ssh, remotecmd, insecure
   commit: addremove, close-branch, amend, secret, edit, interactive, include, exclude, message, logfile, date, user, subrepos
-  diff: rev, change, text, git, nodates, noprefix, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, relative, include, exclude, subrepos
+  diff: rev, change, text, git, nodates, noprefix, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, root, include, exclude, subrepos
   export: output, switch-parent, rev, text, git, nodates
   forget: include, exclude
   init: ssh, remotecmd, insecure
   log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, patch, git, limit, no-merges, stat, graph, style, template, include, exclude
   merge: force, rev, preview, tool
diff --git a/tests/test-diff-subdir.t b/tests/test-diff-subdir.t
--- a/tests/test-diff-subdir.t
+++ b/tests/test-diff-subdir.t
@@ -45,21 +45,21 @@ inside beta
   +2
 
 relative to beta
 
   $ cd ..
-  $ hg diff --nodates --relative beta
+  $ hg diff --nodates --root beta
   diff -r 7d5ef1aea329 two
   --- a/two
   +++ b/two
   @@ -0,0 +1,1 @@
   +2
 
 inside beta
 
   $ cd beta
-  $ hg diff --nodates --relative .
+  $ hg diff --nodates --root .
   diff -r 7d5ef1aea329 two
   --- a/two
   +++ b/two
   @@ -0,0 +1,1 @@
   +2
diff --git a/tests/test-diffstat.t b/tests/test-diffstat.t
--- a/tests/test-diffstat.t
+++ b/tests/test-diffstat.t
@@ -80,28 +80,28 @@ diffstat within directories:
   $ hg diff --stat
    dir1/new |  1 +
    dir2/new |  1 +
    2 files changed, 2 insertions(+), 0 deletions(-)
 
-  $ hg diff --stat --relative dir1
+  $ hg diff --stat --root dir1
    new |  1 +
    1 files changed, 1 insertions(+), 0 deletions(-)
 
-  $ hg diff --stat --relative dir1 dir2
+  $ hg diff --stat --root dir1 dir2
   warning: dir2 not inside relative root dir1
 
-  $ hg diff --stat --relative dir1 -I dir1/old
+  $ hg diff --stat --root dir1 -I dir1/old
 
   $ cd dir1
   $ hg diff --stat .
    dir1/new |  1 +
    1 files changed, 1 insertions(+), 0 deletions(-)
-  $ hg diff --stat --relative .
+  $ hg diff --stat --root .
    new |  1 +
    1 files changed, 1 insertions(+), 0 deletions(-)
 
-  $ hg diff --stat --relative ../dir1 ../dir2
+  $ hg diff --stat --root ../dir1 ../dir2
   warning: ../dir2 not inside relative root .
 
-  $ hg diff --stat --relative . -I old
+  $ hg diff --stat --root . -I old
 
   $ cd ..
diff --git a/tests/test-git-export.t b/tests/test-git-export.t
--- a/tests/test-git-export.t
+++ b/tests/test-git-export.t
@@ -43,15 +43,15 @@ Copy:
    new
   +copy2
 
 Cross and same-directory copies with a relative root:
 
-  $ hg diff --git --relative .. -r 1:tip
+  $ hg diff --git --root .. -r 1:tip
   abort: .. not under root '$TESTTMP'
   [255]
-  $ hg diff --git --relative doesnotexist -r 1:tip
-  $ hg diff --git --relative . -r 1:tip
+  $ hg diff --git --root doesnotexist -r 1:tip
+  $ hg diff --git --root . -r 1:tip
   diff --git a/dir1/new b/dir1/copy
   copy from dir1/new
   copy to dir1/copy
   --- a/dir1/new
   +++ b/dir1/copy
@@ -64,47 +64,47 @@ Cross and same-directory copies with a r
   --- a/dir1/new
   +++ b/dir2/copy
   @@ -1,1 +1,2 @@
    new
   +copy2
-  $ hg diff --git --relative dir1 -r 1:tip
+  $ hg diff --git --root dir1 -r 1:tip
   diff --git a/new b/copy
   copy from new
   copy to copy
   --- a/new
   +++ b/copy
   @@ -1,1 +1,2 @@
    new
   +copy1
 
-  $ hg diff --git --relative dir2/ -r 1:tip
+  $ hg diff --git --root dir2/ -r 1:tip
   diff --git a/copy b/copy
   new file mode 100644
   --- /dev/null
   +++ b/copy
   @@ -0,0 +1,2 @@
   +new
   +copy2
 
-  $ hg diff --git --relative dir1 -r 1:tip -I '**/copy'
+  $ hg diff --git --root dir1 -r 1:tip -I '**/copy'
   diff --git a/new b/copy
   copy from new
   copy to copy
   --- a/new
   +++ b/copy
   @@ -1,1 +1,2 @@
    new
   +copy1
 
-  $ hg diff --git --relative dir1 -r 1:tip dir2
+  $ hg diff --git --root dir1 -r 1:tip dir2
   warning: dir2 not inside relative root dir1
 
-  $ hg diff --git --relative dir1 -r 1:tip 'dir2/{copy}'
+  $ hg diff --git --root dir1 -r 1:tip 'dir2/{copy}'
   warning: dir2/{copy} not inside relative root dir1
 
   $ cd dir1
-  $ hg diff --git --relative .. -r 1:tip
+  $ hg diff --git --root .. -r 1:tip
   diff --git a/dir1/new b/dir1/copy
   copy from dir1/new
   copy to dir1/copy
   --- a/dir1/new
   +++ b/dir1/copy
@@ -118,15 +118,15 @@ Cross and same-directory copies with a r
   +++ b/dir2/copy
   @@ -1,1 +1,2 @@
    new
   +copy2
 
-  $ hg diff --git --relative ../.. -r 1:tip
+  $ hg diff --git --root ../.. -r 1:tip
   abort: ../.. not under root '$TESTTMP'
   [255]
-  $ hg diff --git --relative ../doesnotexist -r 1:tip
-  $ hg diff --git --relative .. -r 1:tip
+  $ hg diff --git --root ../doesnotexist -r 1:tip
+  $ hg diff --git --root .. -r 1:tip
   diff --git a/dir1/new b/dir1/copy
   copy from dir1/new
   copy to dir1/copy
   --- a/dir1/new
   +++ b/dir1/copy
@@ -140,31 +140,31 @@ Cross and same-directory copies with a r
   +++ b/dir2/copy
   @@ -1,1 +1,2 @@
    new
   +copy2
 
-  $ hg diff --git --relative . -r 1:tip
+  $ hg diff --git --root . -r 1:tip
   diff --git a/new b/copy
   copy from new
   copy to copy
   --- a/new
   +++ b/copy
   @@ -1,1 +1,2 @@
    new
   +copy1
-  $ hg diff --git --relative . -r 1:tip copy
+  $ hg diff --git --root . -r 1:tip copy
   diff --git a/new b/copy
   copy from new
   copy to copy
   --- a/new
   +++ b/copy
   @@ -1,1 +1,2 @@
    new
   +copy1
-  $ hg diff --git --relative . -r 1:tip ../dir2
+  $ hg diff --git --root . -r 1:tip ../dir2
   warning: ../dir2 not inside relative root .
-  $ hg diff --git --relative . -r 1:tip '../dir2/*'
+  $ hg diff --git --root . -r 1:tip '../dir2/*'
   warning: ../dir2/* not inside relative root .
   $ cd ..
 
 Rename:
 
@@ -193,11 +193,11 @@ Rename:
    copy2
   +rename2
 
 Cross and same-directory renames with a relative root:
 
-  $ hg diff --relative dir1 --git -r 2:tip
+  $ hg diff --root dir1 --git -r 2:tip
   diff --git a/copy b/rename1
   rename from copy
   rename to rename1
   --- a/copy
   +++ b/rename1
@@ -212,29 +212,29 @@ Cross and same-directory renames with a 
   @@ -0,0 +1,3 @@
   +new
   +copy2
   +rename2
 
-  $ hg diff --relative dir2 --git -r 2:tip
+  $ hg diff --root dir2 --git -r 2:tip
   diff --git a/copy b/copy
   deleted file mode 100644
   --- a/copy
   +++ /dev/null
   @@ -1,2 +0,0 @@
   -new
   -copy2
 
-  $ hg diff --relative dir1 --git -r 2:tip -I '**/copy'
+  $ hg diff --root dir1 --git -r 2:tip -I '**/copy'
   diff --git a/copy b/copy
   deleted file mode 100644
   --- a/copy
   +++ /dev/null
   @@ -1,2 +0,0 @@
   -new
   -copy1
 
-  $ hg diff --relative dir1 --git -r 2:tip -I '**/rename*'
+  $ hg diff --root dir1 --git -r 2:tip -I '**/rename*'
   diff --git a/copy b/rename1
   copy from copy
   copy to rename1
   --- a/copy
   +++ b/rename1
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -507,11 +507,11 @@ Test command without options
    -w --ignore-all-space    ignore white space when comparing lines
    -b --ignore-space-change ignore changes in the amount of white space
    -B --ignore-blank-lines  ignore changes whose lines are all blank
    -U --unified NUM         number of lines of context to show
       --stat                output diffstat-style summary of changes
-      --relative DIR        produce diffs relative to subdirectory
+      --root DIR            produce diffs relative to subdirectory
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
    -S --subrepos            recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)


More information about the Mercurial-devel mailing list