diff --git a/hgext/histedit.py b/hgext/histedit.py index 75d550b7d8f5e2dd20caa82737e24788183c0836_aGdleHQvaGlzdGVkaXQucHk=..38dcb85f9370bf2b647b4e728cb9488a960d7d22_aGdleHQvaGlzdGVkaXQucHk= 100644 --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -160,6 +160,7 @@ import os import sys +from mercurial import bundle2 from mercurial import cmdutil from mercurial import discovery from mercurial import error @@ -822,7 +823,18 @@ backupfile = repo.join(state.backupfile) f = hg.openpath(ui, backupfile) gen = exchange.readbundle(ui, f, backupfile) - gen.apply(repo, 'histedit', 'bundle:' + backupfile) + tr = repo.transaction('histedit.abort') + try: + if not isinstance(gen, bundle2.unbundle20): + gen.apply(repo, 'histedit', 'bundle:' + backupfile) + if isinstance(gen, bundle2.unbundle20): + bundle2.applybundle(repo, gen, tr, + source='histedit', + url='bundle:' + backupfile) + tr.close() + finally: + tr.release() + os.remove(backupfile) # check whether we should update away