mq: qdiff with the same diff options than qrefresh (issue1350)
Specifically, if current patch is a git patch and mq.git=keep, diff in git
mode.
--- a/hgext/mq.py Fri Jan 01 21:21:34 2010 +0100
+++ b/hgext/mq.py Fri Jan 01 21:49:05 2010 +0100
@@ -771,11 +771,13 @@
def check_toppatch(self, repo):
if len(self.applied) > 0:
top = bin(self.applied[-1].rev)
+ patch = self.applied[-1].name
pp = repo.dirstate.parents()
if top not in pp:
raise util.Abort(_("working directory revision is not qtip"))
- return top
- return None
+ return top, patch
+ return None, None
+
def check_localchanges(self, repo, force=False, refresh=True):
m, a, r, d = repo.status()[:4]
if m or a or r or d:
@@ -1125,7 +1127,7 @@
end = len(self.applied)
rev = bin(self.applied[start].rev)
if update:
- top = self.check_toppatch(repo)
+ top = self.check_toppatch(repo)[0]
try:
heads = repo.changelog.heads(rev)
@@ -1174,7 +1176,7 @@
wlock.release()
def diff(self, repo, pats, opts):
- top = self.check_toppatch(repo)
+ top, patch = self.check_toppatch(repo)
if not top:
self.ui.write(_("no patches applied\n"))
return
@@ -1183,7 +1185,7 @@
node1, node2 = None, qp
else:
node1, node2 = qp, None
- diffopts = self.diffopts(opts)
+ diffopts = self.diffopts(opts, patch)
self.printdiff(repo, diffopts, node1, node2, files=pats, opts=opts)
def refresh(self, repo, pats=None, **opts):
@@ -2058,7 +2060,7 @@
if not files:
raise util.Abort(_('qfold requires at least one patch name'))
- if not q.check_toppatch(repo):
+ if not q.check_toppatch(repo)[0]:
raise util.Abort(_('No patches applied'))
q.check_localchanges(repo)
--- a/tests/test-mq-qdiff Fri Jan 01 21:21:34 2010 +0100
+++ b/tests/test-mq-qdiff Fri Jan 01 21:49:05 2010 +0100
@@ -2,6 +2,8 @@
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
+echo "[mq]" >> $HGRCPATH
+echo "git=keep" >> $HGRCPATH
echo % init
hg init a
@@ -60,3 +62,9 @@
echo % qdiff --reverse
hg qdiff --nodates --reverse
+
+echo % qdiff preserve existing git flag
+hg qrefresh --git
+echo a >> lines
+hg qdiff
+
--- a/tests/test-mq-qdiff.out Fri Jan 01 21:21:34 2010 +0100
+++ b/tests/test-mq-qdiff.out Fri Jan 01 21:49:05 2010 +0100
@@ -103,3 +103,22 @@
7
8
9
+% qdiff preserve existing git flag
+diff --git a/lines b/lines
+--- a/lines
++++ b/lines
+@@ -1,9 +1,12 @@
++
++
+ 1
+ 2
+ 3
+ 4
+-hello world
+-goodbye world
++hello world
++ goodbye world
+ 7
+ 8
+ 9
++a