Mercurial > hg > mercurial-crew
changeset 18198:9b4adaef0db9 stable
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.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Sun, 30 Dec 2012 03:49:15 +0100 (2012-12-30) |
parents | 153659e86a5f |
children | 24f5bec1601f |
files | mercurial/cmdutil.py tests/test-commit-amend.t |
diffstat | 2 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -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]
--- a/tests/test-commit-amend.t +++ b/tests/test-commit-amend.t @@ -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