# HG changeset patch # User Pierre-Yves David # Date 1356835755 -3600 # Node ID 9b4adaef0db9809973d45e252b1bd8f1b7648b69 # Parent 153659e86a5f441cc04544f71a34715bc161c28f amend: prevent loss of bookmark on failed amend The active bookmark were moved to the temporary commit. When the transaction were rollbacked, the bookmark were lost. We now temporarly disable the bookmark to prevent this effect. diff -r 153659e86a5f -r 9b4adaef0db9 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sat Dec 29 18:00:18 2012 +0100 +++ b/mercurial/cmdutil.py Sun Dec 30 03:49:15 2012 +0100 @@ -1635,10 +1635,13 @@ # First, do a regular commit to record all changes in the working # directory (if there are any) ui.callhooks = False + currentbookmark = repo._bookmarkcurrent try: + repo._bookmarkcurrent = None opts['message'] = 'temporary amend commit for %s' % old node = commit(ui, repo, commitfunc, pats, opts) finally: + repo._bookmarkcurrent = currentbookmark ui.callhooks = True ctx = repo[node] diff -r 153659e86a5f -r 9b4adaef0db9 tests/test-commit-amend.t --- a/tests/test-commit-amend.t Sat Dec 29 18:00:18 2012 +0100 +++ b/tests/test-commit-amend.t Sun Dec 30 03:49:15 2012 +0100 @@ -243,6 +243,24 @@ book1 1:48bb6e53a15f * book2 1:48bb6e53a15f +abort does not loose bookmarks + + $ cat > editor.sh << '__EOF__' + > #!/bin/sh + > echo "" > "$1" + > __EOF__ + $ echo a >> a + $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit --amend + transaction abort! + rollback completed + abort: empty commit message + [255] + $ hg book + book1 1:48bb6e53a15f + * book2 1:48bb6e53a15f + $ hg revert -Caq + $ rm editor.sh + $ echo '[defaults]' >> $HGRCPATH $ echo "commit=-d '0 0'" >> $HGRCPATH