diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -771,11 +771,13 @@ class queue(object): 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 @@ class queue(object): 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 @@ class queue(object): 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 @@ class queue(object): 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 @@ def fold(ui, repo, *files, **opts): 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) diff --git a/tests/test-mq-qdiff b/tests/test-mq-qdiff --- a/tests/test-mq-qdiff +++ b/tests/test-mq-qdiff @@ -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 @@ hg qdiff --nodates -w echo % qdiff --reverse hg qdiff --nodates --reverse + +echo % qdiff preserve existing git flag +hg qrefresh --git +echo a >> lines +hg qdiff + diff --git a/tests/test-mq-qdiff.out b/tests/test-mq-qdiff.out --- a/tests/test-mq-qdiff.out +++ b/tests/test-mq-qdiff.out @@ -103,3 +103,22 @@ diff -r 35fb829491c1 lines 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