changeset 26524:61c295d9d402

shelve: restore unshelved dirstate explicitly after aborting transaction Before this patch, "hg unshelve" uses aborting a current transaction to discard temporary changes while unshelving. This assumes that dirstate changes in a transaction scope are kept even after aborting it. But this assumption will be broken by "transactional dirstate". See the wiki page below for detail about it. https://mercurial.selenic.com/wiki/DirstateTransactionPlan This patch explicitly saves shelved dirstate just before aborting current transaction, and restore dirstate with it after aborting by utility function '_aborttransaction()' added by previous patch.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Thu, 08 Oct 2015 01:41:30 +0900
parents 1d23bf6cd90a
children abc2327e382a
files hgext/shelve.py
diffstat 1 files changed, 2 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/shelve.py	Thu Oct 08 01:41:30 2015 +0900
+++ b/hgext/shelve.py	Thu Oct 08 01:41:30 2015 +0900
@@ -734,6 +734,8 @@
         repo.unfiltered().changelog.strip(oldtiprev, tr)
 
         unshelvecleanup(ui, repo, basename, opts)
+
+        _aborttransaction(repo)
     finally:
         ui.quiet = oldquiet
         if tr: