[PATCH 5 of 5] histedit: do not stay on a cleaned nodes on abort

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Aug 3 16:25:27 CDT 2015


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1438607585 25200
#      Mon Aug 03 06:13:05 2015 -0700
# Node ID ab1f4da158c6950ed6b8eb645c5a634ec169f55a
# Parent  ec0875fa682acd025a41471438c64041a37a2f82
histedit: do not stay on a cleaned nodes on abort

There is case where nodes are neither in tmpnodes nor leaf but still get
removed. For example, if you used the "edit" action, made a commit and run
--abort. The commit you made is not tracked by histedit, yet it will likely be
cleaned up with its parent. The commit may not tracked because no replacements
computations are done in the --abort case.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -789,11 +789,11 @@ def _histedit(ui, repo, state, *freeargs
             changegroup.addchangegroup(repo, gen, 'histedit',
                                        'bundle:' + backupfile)
             os.remove(backupfile)
 
         # check whether we should update away
-        if repo.unfiltered().revs('parents() and (%n  or %ln)',
+        if repo.unfiltered().revs('parents() and (%n  or %ln::)',
                                   state.parentctxnode, leafs | tmpnodes):
             hg.clean(repo, state.topmost)
         cleanupnode(ui, repo, 'created', tmpnodes)
         cleanupnode(ui, repo, 'temp', leafs)
         state.clear()


More information about the Mercurial-devel mailing list