Mercurial > hg-stable
diff mercurial/commands.py @ 9725:3f522d2fa633
diff: add --inverse option
Most of the time, one can reverse a diff by swapping the revisions passed with
-r but it happens that if you use the global -R, and diff against the tip of
the current repo, you can't swap the revisions. One use-case for that is
reviewing changes from a bundle before unbundling. One could also pipe the
output of `hg diff` to a command line filter that reverses the diff, but that
would remove the benefit from color diffs. Therefore, having an option in
`hg diff` to reverse a diff is a good thing.
The option flag selection was tricky. GNU patch uses -R/--reverse but -R is
already used as a global option and --reverse would make --rev ambiguous.
author | Yannick Gingras <ygingras@ygingras.net> |
---|---|
date | Thu, 05 Nov 2009 15:18:56 +0100 |
parents | fe1b19bfe75b |
children | 36c388a1aa51 |
line wrap: on
line diff
--- a/mercurial/commands.py Thu Nov 05 15:06:35 2009 +0100 +++ b/mercurial/commands.py Thu Nov 05 15:18:56 2009 +0100 @@ -1102,6 +1102,7 @@ revs = opts.get('rev') change = opts.get('change') stat = opts.get('stat') + inv = opts.get('inverse') if revs and change: msg = _('cannot specify --rev and --change at the same time') @@ -1112,6 +1113,9 @@ else: node1, node2 = cmdutil.revpair(repo, revs) + if inv: + node1, node2 = node2, node1 + if stat: opts['unified'] = '0' diffopts = patch.diffopts(ui, opts) @@ -3280,6 +3284,7 @@ diffopts2 = [ ('p', 'show-function', None, _('show which function each change is in')), + ('', 'inverse', None, _('produce a diff that undoes the changes')), ('w', 'ignore-all-space', None, _('ignore white space when comparing lines')), ('b', 'ignore-space-change', None,