diff hgext/mq.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 7d17794f08a9
children f16ec85f125c
line wrap: on
line diff
--- a/hgext/mq.py	Thu Nov 05 15:06:35 2009 +0100
+++ b/hgext/mq.py	Thu Nov 05 15:18:56 2009 +0100
@@ -1129,8 +1129,12 @@
             self.ui.write(_("no patches applied\n"))
             return
         qp = self.qparents(repo, top)
+        if opts.get('inverse'):
+            node1, node2 = None, qp
+        else:
+            node1, node2 = qp, None
         self._diffopts = patch.diffopts(self.ui, opts)
-        self.printdiff(repo, qp, files=pats, opts=opts)
+        self.printdiff(repo, node1, node2, files=pats, opts=opts)
 
     def refresh(self, repo, pats=None, **opts):
         if len(self.applied) == 0: