[PATCH] support -k for qfinish

Weijun Wang weijun.wang at oracle.com
Mon Oct 24 00:51:04 CDT 2011


mq: keep the patch file after it's committed

I'd like the patch file(s) kept in .hg/patches even after moved to
repository history. To achieve this, we can add a -k option (as in
qdelete)

Thanks
Weijun

# HG changeset patch
# User weijun
# Date 1319435107 -28800
# Node ID 14adf3b3ef067de482ab56707ca4130eca2e27d7
# Parent  48d552eb8d43ee671f5799b191f15c2447e8de68
Support -k for qfinish

diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -797,9 +797,9 @@
              patches.append(patch)
          return patches

-    def finish(self, repo, revs):
+    def finish(self, repo, revs, keep=False):
          patches = self._revpatches(repo, sorted(revs))
-        self._cleanup(patches, len(patches))
+        self._cleanup(patches, len(patches), keep)

      def delete(self, repo, patches, opts):
          if not patches and not opts.get('rev'):
@@ -2886,8 +2886,9 @@
              q.savedirty()

  @command("qfinish",
-         [('a', 'applied', None, _('finish all applied changesets'))],
-         _('hg qfinish [-a] [REV]...'))
+         [('k', 'keep', None, _('keep patch file')),
+          ('a', 'applied', None, _('finish all applied changesets'))],
+         _('hg qfinish [-k] [-a] [REV]...'))
  def finish(ui, repo, *revrange, **opts):
      """move applied patches into repository history

@@ -2898,7 +2899,8 @@
      Accepts a revision range or the -a/--applied option. If --applied
      is specified, all applied mq revisions are removed from mq
      control. Otherwise, the given revisions must be at the base of the
-    stack of applied patches.
+    stack of applied patches.  With -k/--keep, the patch files are
+    preserved in the patch directory.

      This can be especially useful if your changes have been applied to
      an upstream repository, or if you are about to push your changes
@@ -2917,7 +2919,7 @@
          return 0

      revs = scmutil.revrange(repo, revrange)
-    q.finish(repo, revs)
+    q.finish(repo, revs, opts.get('keep'))
      q.savedirty()
      return 0



More information about the Mercurial-devel mailing list