fix qrefresh'ing an empty patch
authorAlexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 10 Mar 2007 22:03:23 -0300
changeset 4174 7307d2e98b32
parent 4173 b36bd7534c08
child 4175 a2335e832e16
fix qrefresh'ing an empty patch This is not superefficient (the commit will have to walk the whole tree), but it works.
hgext/mq.py
tests/test-mq
tests/test-mq.out
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1015,10 +1015,10 @@ class queue:
             m = util.unique(mm)
             r = util.unique(dd)
             a = util.unique(aa)
-            filelist = filter(matchfn, util.unique(m + r + a))
+            c = [filter(matchfn, l) for l in (m, a, r, [], u)]
+            filelist = util.unique(c[0] + c[1] + c[2])
             patch.diff(repo, patchparent, files=filelist, match=matchfn,
-                       fp=patchf, changes=(m, a, r, [], u),
-                       opts=self.diffopts())
+                       fp=patchf, changes=c, opts=self.diffopts())
             patchf.close()
 
             repo.dirstate.setparents(*cparents)
@@ -1066,7 +1066,8 @@ class queue:
                 message = msg
 
             self.strip(repo, top, update=False, backup='strip', wlock=wlock)
-            n = repo.commit(filelist, message, changes[1], force=1, wlock=wlock)
+            n = repo.commit(filelist, message, changes[1], match=matchfn,
+                            force=1, wlock=wlock)
             self.applied[-1] = statusentry(revlog.hex(n), patchfn)
             self.applied_dirty = 1
         else:
--- a/tests/test-mq
+++ b/tests/test-mq
@@ -55,6 +55,18 @@ sed -e "s/^\(diff -r \)\([a-f0-9]* \)/\1
     -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
     -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" .hg/patches/test.patch
 
+echo % empty qrefresh
+
+hg qrefresh -X a
+echo 'revision:'
+hg diff -r -2 -r -1
+echo 'patch:'
+cat .hg/patches/test.patch
+echo 'working dir diff:'
+hg diff --nodates -q
+# restore things
+hg qrefresh
+
 echo % qpop
 
 hg qpop
--- a/tests/test-mq.out
+++ b/tests/test-mq.out
@@ -71,6 +71,17 @@ diff -r  xa
 @@ -1,1 +1,2 @@ a
  a
 +a
+% empty qrefresh
+revision:
+patch:
+foo bar
+
+working dir diff:
+--- a/a
++++ b/a
+@@ -1,1 +1,2 @@ a
+ a
++a
 % qpop
 Patch queue now empty
 % qpush