diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -456,6 +456,7 @@ class queue: raise finally: del tr, lock, wlock + self.removeundo(repo) def _apply(self, repo, series, list=False, update_status=True, strict=False, patchdir=None, merge=None, all_files={}): @@ -527,7 +528,6 @@ class queue: self.ui.warn("fuzz found when applying patch, stopping\n") err = 1 break - self.removeundo(repo) return (err, n) def delete(self, repo, patches, opts): @@ -654,6 +654,9 @@ class queue: self.removeundo(repo) repair.strip(self.ui, repo, rev, backup) + # strip may have unbundled a set of backed up revisions after + # the actual strip + self.removeundo(repo) finally: del lock, wlock diff --git a/tests/test-mq b/tests/test-mq --- a/tests/test-mq +++ b/tests/test-mq @@ -1,5 +1,12 @@ #!/bin/sh +checkundo() +{ + if [ -f .hg/store/undo ]; then + echo ".hg/store/undo still exists after $1" + fi +} + echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH @@ -57,6 +64,7 @@ echo '% qinit; ; qinit -c' hg init e cd e hg qnew A +checkundo qnew echo foo > foo hg add foo hg qrefresh @@ -100,14 +108,17 @@ echo 'working dir diff:' hg diff --nodates -q # restore things hg qrefresh +checkundo qrefresh echo % qpop hg qpop +checkundo qpop echo % qpush hg qpush +checkundo qpush cd .. @@ -394,6 +405,7 @@ HGMERGE=true hg merge hg ci -m merge -d '0 0' hg log hg strip 1 2>&1 | sed 's/\(saving bundle to \).*/\1/' +checkundo strip hg log cd .. diff --git a/tests/test-mq-merge b/tests/test-mq-merge --- a/tests/test-mq-merge +++ b/tests/test-mq-merge @@ -7,6 +7,13 @@ rewrite_path() sed -e 's:\\:/:g' -e 's:[^ ]*/t/::g' } +checkundo() +{ + if [ -f .hg/store/undo ]; then + echo ".hg/store/undo still exists after $1" + fi +} + echo "[extensions]" >> $HGRCPATH echo "hgext.mq=" >> $HGRCPATH @@ -25,6 +32,7 @@ hg qrefresh -m "rm a" # Save the patch queue so we can merge it later hg qsave -c -e 2>&1 | rewrite_path +checkundo qsave # Update b and commit in an "update" changeset hg up -C init @@ -36,6 +44,7 @@ hg ci -m update # The system cannot find the file specified => a hg manifest hg qpush -a -m 2>&1 | rewrite_path +checkundo 'qpush -m' hg manifest # ensure status is correct after merge