mq: make qprev return the previous applied patch (issue3245) stable
authorPatrick Mezard <pmezard@gmail.com>
Fri, 03 Feb 2012 19:47:09 +0100
branchstable
changeset 16064 7e5a281a082c
parent 16063 c36db39b3fee
child 16065 8af9e08a094f
child 16066 6a42846cf769
child 16077 a27aab28047c
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.
hgext/mq.py
tests/test-mq-guards.t
tests/test-mq.t
--- 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