[PATCH] mq: --keep default behaviour of qdelete

Erik Zielke ez at aragost.com
Thu Oct 14 04:45:14 CDT 2010


# HG changeset patch
# User Erik Zielke <ez at aragost.com>
# Date 1286288142 -7200
# Node ID 2088b605790bfbeb7e99b37b3de6baa59d8d5e2e
# Parent  80a3d1121c106fd972fa84423f55b2ce2e9407c9
mq: --keep default behaviour of qdelete.

Changed qdelete so that keep is default behaviour, and renames the
patch by appending .deleted to the patch file name.

If a .deleted patch files of that name already exists, it will be
deleted, and the new deleted patch will be renamed to that name.

diff -r 80a3d1121c10 -r 2088b605790b hgext/mq.py
--- a/hgext/mq.py	Thu Oct 14 01:28:29 2010 +0200
+++ b/hgext/mq.py	Tue Oct 05 16:15:42 2010 +0200
@@ -714,6 +714,12 @@
             else:
                 for p in patches:
                     os.unlink(self.join(p))
+        else:
+            for p in patches:
+                deletedfilename = self.join(p) + '.deleted'
+                if os.path.isfile(deletedfilename):
+                    os.unlink(deletedfilename)
+                os.rename(self.join(p), deletedfilename)
 
         if numrevs:
             del self.applied[:numrevs]
@@ -779,7 +785,11 @@
             realpatches += revpatches
             numrevs = len(revpatches)
 
-        self._cleanup(realpatches, numrevs, opts.get('keep'))
+        keep = True
+        if opts.get('delete'):
+            keep = False
+
+        self._cleanup(realpatches, numrevs, keep)
 
     def check_toppatch(self, repo):
         if self.applied:
@@ -1743,8 +1753,9 @@
 def delete(ui, repo, *patches, **opts):
     """remove patches from queue
 
-    The patches must not be applied, and at least one patch is required. With
-    -k/--keep, the patch files are preserved in the patch directory.
+    The patches must not be applied, and at least one patch is required. The
+    the patch files are preserved in the patch directory, with .deleted
+    appended to its name.
 
     To stop managing a patch and move it into permanent history,
     use the :hg:`qfinish` command."""
@@ -3039,10 +3050,11 @@
          _('hg qdiff [OPTION]... [FILE]...')),
     "qdelete|qremove|qrm":
         (delete,
-         [('k', 'keep', None, _('keep patch file')),
+         [('k', 'keep', None, _('keep patch file (DEPRECATED)')),
+          ('d', 'delete', None, _('delete patch file')),
           ('r', 'rev', [],
            _('stop managing a revision (DEPRECATED)'), _('REV'))],
-         _('hg qdelete [-k] [PATCH]...')),
+         _('hg qdelete [-d] [PATCH]...')),
     'qfold':
         (fold,
          [('e', 'edit', None, _('edit patch header')),
diff -r 80a3d1121c10 -r 2088b605790b tests/test-mq-guards.t
--- a/tests/test-mq-guards.t	Thu Oct 14 01:28:29 2010 +0200
+++ b/tests/test-mq-guards.t	Tue Oct 05 16:15:42 2010 +0200
@@ -426,11 +426,11 @@
 hg qseries -m: only b.patch should be shown
 the guards file was not ignored in the past
 
-  $ hg qdelete -k b.patch
+  $ hg qdelete b.patch
   $ hg qseries -m
-  b.patch
+  b.patch.deleted
 
 hg qseries -m with color
 
   $ hg --config extensions.color= qseries -m --color=always
-  b.patch
+  b.patch.deleted
diff -r 80a3d1121c10 -r 2088b605790b tests/test-mq-qdelete.t
--- a/tests/test-mq-qdelete.t	Thu Oct 14 01:28:29 2010 +0200
+++ b/tests/test-mq-qdelete.t	Tue Oct 05 16:15:42 2010 +0200
@@ -16,7 +16,7 @@
   abort: qdelete requires at least one revision or patch name
   [255]
 
-  $ hg qdel c
+  $ hg qdel -d c
   abort: cannot delete applied patch c
   [255]
 
@@ -26,7 +26,7 @@
 
 Delete the same patch twice in one command (issue2427)
 
-  $ hg qdel c c
+  $ hg qdel -d c c
 
   $ hg qseries
   a
@@ -42,11 +42,10 @@
   popping b
   now at: a
 
-  $ hg qdel -k 1
+  $ hg qdel -d 1
 
   $ ls .hg/patches
   a
-  b
   series
   status
 
@@ -158,7 +157,7 @@
   popping 3.diff
   patch queue now empty
   $ hg qdel -k 3.diff
-  $ hg qimp -e 3.diff
-  adding 3.diff to series file
+  $ hg qimp -e 3.diff.deleted
+  adding 3.diff.deleted to series file
   $ hg qfinish -a
   no patches applied
diff -r 80a3d1121c10 -r 2088b605790b tests/test-mq-qimport.t
--- a/tests/test-mq-qimport.t	Thu Oct 14 01:28:29 2010 +0200
+++ b/tests/test-mq-qimport.t	Tue Oct 05 16:15:42 2010 +0200
@@ -167,18 +167,18 @@
   $ hg qpop -a
   popping 2.diff
   patch queue now empty
-  $ hg qdel -k 2.diff
+  $ hg qdel 2.diff
 
 qimport -e
 
-  $ hg qimport -e 2.diff
-  adding 2.diff to series file
-  $ hg qdel -k 2.diff
+  $ hg qimport -e 2.diff.deleted
+  adding 2.diff.deleted to series file
+  $ hg qdel 2.diff.deleted
 
 qimport -e --name newname oldexisitingpatch
 
-  $ hg qimport -e --name this-name-is-better 2.diff
-  renaming 2.diff to this-name-is-better
+  $ hg qimport -e --name this-name-is-better 2.diff.deleted.deleted
+  renaming 2.diff.deleted.deleted to this-name-is-better
   adding this-name-is-better to series file
   $ hg qser
   this-name-is-better
diff -r 80a3d1121c10 -r 2088b605790b tests/test-mq-qnew.t
--- a/tests/test-mq-qnew.t	Thu Oct 14 01:28:29 2010 +0200
+++ b/tests/test-mq-qnew.t	Tue Oct 05 16:15:42 2010 +0200
@@ -26,7 +26,7 @@
   >     hg qnew foo/bar.patch
   >     hg qseries
   >     hg qpop
-  >     hg qdelete foo/bar.patch
+  >     hg qdelete -d foo/bar.patch
   > 
   >     echo '% qnew with uncommitted changes'
   >     echo a > somefile


More information about the Mercurial-devel mailing list