Merge qprev/qnext backout
authorMatt Mackall <mpm@selenic.com>
Mon, 14 Sep 2009 17:29:47 -0500
changeset 9440 cd67bfcfabbe
parent 9438 b2f3b9c82ac0 (current diff)
parent 9439 f2acc0c00bec (diff)
child 9447 bafde63c913a
Merge qprev/qnext backout
hgext/mq.py
tests/test-mq.out
--- a/hgext/mq.py	Fri Sep 11 16:58:19 2009 +0200
+++ b/hgext/mq.py	Mon Sep 14 17:29:47 2009 -0500
@@ -1865,6 +1865,39 @@
     repo.mq.qseries(repo, missing=opts['missing'], summary=opts['summary'])
     return 0
 
+def top(ui, repo, **opts):
+    """print the name of the current patch"""
+    q = repo.mq
+    t = q.applied and q.series_end(True) or 0
+    if t:
+        return q.qseries(repo, start=t-1, length=1, status='A',
+                         summary=opts.get('summary'))
+    else:
+        ui.write(_("no patches applied\n"))
+        return 1
+
+def next(ui, repo, **opts):
+    """print the name of the next patch"""
+    q = repo.mq
+    end = q.series_end()
+    if end == len(q.series):
+        ui.write(_("all patches applied\n"))
+        return 1
+    return q.qseries(repo, start=end, length=1, summary=opts.get('summary'))
+
+def prev(ui, repo, **opts):
+    """print the name of the previous patch"""
+    q = repo.mq
+    l = len(q.applied)
+    if l == 1:
+        ui.write(_("only one patch applied\n"))
+        return 1
+    if not l:
+        ui.write(_("no patches applied\n"))
+        return 1
+    return q.qseries(repo, start=l-2, length=1, status='A',
+                     summary=opts.get('summary'))
+
 def setupheaderopts(ui, opts):
     def do(opt, val):
         if not opts[opt] and opts['current' + opt]:
@@ -2579,6 +2612,8 @@
           ('d', 'date', '', _('add "Date: <given date>" to patch'))
           ] + commands.walkopts + commands.commitopts,
          _('hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]...')),
+    "qnext": (next, [] + seriesopts, _('hg qnext [-s]')),
+    "qprev": (prev, [] + seriesopts, _('hg qprev [-s]')),
     "^qpop":
         (pop,
          [('a', 'all', None, _('pop all patches')),
@@ -2636,6 +2671,7 @@
           ('b', 'backup', None, _('bundle unrelated changesets')),
           ('n', 'nobackup', None, _('no backups'))],
          _('hg strip [-f] [-b] [-n] REV')),
+    "qtop": (top, [] + seriesopts, _('hg qtop [-s]')),
     "qunapplied":
         (unapplied,
          [('1', 'first', None, _('show only the first patch'))] + seriesopts,
--- a/tests/test-mq	Fri Sep 11 16:58:19 2009 +0200
+++ b/tests/test-mq	Mon Sep 14 17:29:47 2009 -0500
@@ -152,6 +152,9 @@
 echo % qapplied
 hg qapplied
 
+echo % qtop
+hg qtop
+
 echo % prev
 hg qapp -1
 
--- a/tests/test-mq-guards	Fri Sep 11 16:58:19 2009 +0200
+++ b/tests/test-mq-guards	Mon Sep 14 17:29:47 2009 -0500
@@ -59,6 +59,8 @@
 
 echo % should skip c.patch
 hg qpush -a
+echo % should display b.patch
+hg qtop
 
 hg qguard -n c.patch
 echo % should push c.patch
@@ -82,6 +84,9 @@
 echo % should push b.patch
 hg qpush
 hg qpush -a
+# Used to be an issue with holes in the patch sequence
+# So, put one hole on the base and ask for topmost patch.
+hg qtop
 hg qpop -a
 
 hg qselect 1 2
--- a/tests/test-mq-guards.out	Fri Sep 11 16:58:19 2009 +0200
+++ b/tests/test-mq-guards.out	Mon Sep 14 17:29:47 2009 -0500
@@ -34,6 +34,8 @@
 applying b.patch
 skipping c.patch - guarded by '-a'
 now at: b.patch
+% should display b.patch
+b.patch
 % should push c.patch
 applying c.patch
 now at: c.patch
@@ -64,6 +66,7 @@
 now at: b.patch
 applying c.patch
 now at: c.patch
+c.patch
 popping c.patch
 popping b.patch
 patch queue now empty
--- a/tests/test-mq.out	Fri Sep 11 16:58:19 2009 +0200
+++ b/tests/test-mq.out	Mon Sep 14 17:29:47 2009 -0500
@@ -36,7 +36,9 @@
  qimport      import a patch
  qinit        init a new queue repository
  qnew         create a new patch
+ qnext        print the name of the next patch
  qpop         pop the current patch off the stack
+ qprev        print the name of the previous patch
  qpush        push the next patch onto the stack
  qrefresh     update the current patch
  qrename      rename a patch
@@ -44,6 +46,7 @@
  qsave        save current queue state
  qselect      set or print guarded patches to push
  qseries      print the entire series file
+ qtop         print the name of the current patch
  qunapplied   print the patches not yet applied
  strip        strip a revision and all its descendants from the repository
 
@@ -140,6 +143,8 @@
 % qapplied
 test.patch
 test2.patch
+% qtop
+test2.patch
 % prev
 test.patch
 % next