diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -1758,9 +1758,9 @@ class queue(object): for i in xrange(start, len(self.series)): p, reason = self.pushable(i) if p: - break + return i self.explainpushable(i) - return i + return len(self.series) if self.applied: p = self.applied[-1].name try: @@ -2206,7 +2206,7 @@ def top(ui, repo, **opts): @command("qnext", seriesopts, _('hg qnext [-s]')) def next(ui, repo, **opts): - """print the name of the next patch + """print the name of the next pushable patch Returns 0 on success.""" q = repo.mq @@ -2218,7 +2218,7 @@ def next(ui, repo, **opts): @command("qprev", seriesopts, _('hg qprev [-s]')) def prev(ui, repo, **opts): - """print the name of the previous patch + """print the name of the previous applied patch Returns 0 on success.""" q = repo.mq @@ -2229,7 +2229,8 @@ def prev(ui, repo, **opts): if not l: ui.write(_("no patches applied\n")) return 1 - q.qseries(repo, start=l - 2, length=1, status='A', + idx = q.series.index(q.applied[-2].name) + q.qseries(repo, start=idx, length=1, status='A', summary=opts.get('summary')) def setupheaderopts(ui, opts): diff --git a/tests/test-mq-guards.t b/tests/test-mq-guards.t --- a/tests/test-mq-guards.t +++ b/tests/test-mq-guards.t @@ -107,6 +107,9 @@ should skip c.patch applying b.patch skipping c.patch - guarded by '-a' now at: b.patch + $ hg qnext + all patches applied + [1] should display b.patch @@ -169,6 +172,8 @@ should push b.patch $ hg qpush -a applying c.patch now at: c.patch + $ hg qprev + b.patch Used to be an issue with holes in the patch sequence So, put one hole on the base and ask for topmost patch. diff --git a/tests/test-mq.t b/tests/test-mq.t --- a/tests/test-mq.t +++ b/tests/test-mq.t @@ -72,9 +72,9 @@ help qheader print the header of the topmost or specified patch qimport import a patch qnew create a new patch - qnext print the name of the next patch + qnext print the name of the next pushable patch qpop pop the current patch off the stack - qprev print the name of the previous patch + qprev print the name of the previous applied patch qpush push the next patch onto the stack qqueue manage multiple patch queues qrefresh update the current patch @@ -1476,7 +1476,7 @@ Test that qfinish change phase when mq.s Test that qfinish preserve phase when mq.secret=false - $ sed -i'' $HGRCPATH -e 's/secret=true/secret=false/' + $ sed -i.bak -e 's/secret=true/secret=false/' $HGRCPATH $ hg qfinish qbase patch add-file2 finalized without changeset message $ hg phase 'all()'