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.
% init
% commit
adding base
% qnew mqbase
% qrefresh
% qdiff
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% qdiff dirname
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% qdiff filename
diff -r 67e992f2c4f3 base
--- a/base
+++ b/base
@@ -1,1 +1,1 @@
-base
+patched
% revert
% qpop
popping mqbase
patch queue now empty
% qdelete mqbase
% commit 2
adding lines
% qnew 2
% qdiff -U 1
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,1 +1,3 @@
+
+
1
@@ -4,4 +6,4 @@
4
-hello world
-goodbye world
+hello world
+ goodbye world
7
% qdiff -b
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,9 +1,11 @@
+
+
1
2
3
4
-hello world
-goodbye world
+hello world
+ goodbye world
7
8
9
% qdiff -U 1 -B
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -4,4 +6,4 @@
4
-hello world
-goodbye world
+hello world
+ goodbye world
7
% qdiff -w
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,3 +1,5 @@
+
+
1
2
3
% qdiff --inverse
diff -r 35fb829491c1 lines
--- a/lines
+++ b/lines
@@ -1,11 +1,9 @@
-
-
1
2
3
4
-hello world
- goodbye world
+hello world
+goodbye world
7
8
9