mq: make qprev return the previous applied patch (
issue3245)
The current behaviour is to return the previous one in the series but at the
same time the implementation is buggy because it does not take guarded patches
in account.
--- a/hgext/mq.py Fri Feb 03 19:38:31 2012 +0100
+++ b/hgext/mq.py Fri Feb 03 19:47:09 2012 +0100
@@ -2217,7 +2217,7 @@
@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
@@ -2228,7 +2228,8 @@
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):
--- a/tests/test-mq-guards.t Fri Feb 03 19:38:31 2012 +0100
+++ b/tests/test-mq-guards.t Fri Feb 03 19:47:09 2012 +0100
@@ -172,6 +172,8 @@
$ 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.
--- a/tests/test-mq.t Fri Feb 03 19:38:31 2012 +0100
+++ b/tests/test-mq.t Fri Feb 03 19:47:09 2012 +0100
@@ -74,7 +74,7 @@
qnew create a new 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