amend: prevent loss of bookmark on failed amend stable
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Sun, 30 Dec 2012 03:49:15 +0100
branchstable
changeset 18198 9b4adaef0db9
parent 18197 153659e86a5f
child 18199 24f5bec1601f
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.
mercurial/cmdutil.py
tests/test-commit-amend.t
--- 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]
 
--- 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