[Bug 5368] New: hard to recover when hook interrupts strip

bugzilla at mercurial-scm.org bugzilla at mercurial-scm.org
Wed Sep 14 16:52:06 UTC 2016


https://bz.mercurial-scm.org/show_bug.cgi?id=5368

            Bug ID: 5368
           Summary: hard to recover when hook interrupts strip
           Product: Mercurial
           Version: default branch
          Hardware: PC
                OS: Linux
            Status: UNCONFIRMED
          Severity: feature
          Priority: wish
         Component: strip
          Assignee: bugzilla at selenic.com
          Reporter: martinvonz at google.com
                CC: mercurial-devel at selenic.com

The script below creates two sibling commits (1 and 2) both parented to another
commit (0). It then strips commit 1, which means that it will attempt to put 2
in a bundle, then strip 1, then unbundle 2. However, since the
pretxnchangegroup fails, that will not happen, and the repository is left with
only commit 0 and the dirstate parent still pointing to the bundled commit 2.
Output will be something like this:

saved backup bundle to $repo/.hg/strip-backup/5b7008f9d916-f6770a54-backup.hg
transaction abort!
rollback completed
strip failed, full bundle stored in
'$repo/.hg/strip-backup/5b7008f9d916-f6770a54-backup.hg'
abort: pretxnchangegroup.bad hook exited with status 1
warning: ignoring unknown working parent c8df5b14b02e!

It mentions the same bundle twice, but that's a backup of the stripped 1 that
the user did not want. That's fine to mention, but it's more important to
mention the bundled 2 that the user wanted to keep. Fortunately, that bundle
does exist, so as long as the user knows to look for it, there's nothing lost.

Here's the script:
hg init strip-bug
cd strip-bug
echo a > a
hg add a
hg ci -m a
echo b > b
hg add b
hg ci -m b
hg co .^
echo c > c
hg add c
hg ci -m c
hg log -G
hg strip 1 --config hooks.pretxnchangegroup.bad=false --debug
hg log -G

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list