# HG changeset patch # User Boris Feld # Date 2018-06-05 22:57:22 # Node ID c67c94c0e7aeaf32046c4ae43d58a990dd09320f # Parent 6a71324cb68ba7d5f174f1ddbc9513757a50b0fc shelve: look for shelved node in the repository before unbundling This prepares the version of shelve that would not strip the shelved node from the repository. If we have the node information, search for it in the repository and only fallback on unbundling if it is missing. To be able to find such nodes, we operate on an unfiltered repository. diff --git a/hgext/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -764,9 +764,15 @@ def _commitworkingcopychanges(ui, repo, def _unshelverestorecommit(ui, repo, basename): """Recreate commit in the repository during the unshelve""" repo = repo.unfiltered() - with ui.configoverride({('ui', 'quiet'): True}): - shelvedfile(repo, basename, 'hg').applybundle() + if shelvedfile(repo, basename, 'shelve').exists(): + node = shelvedfile(repo, basename, 'shelve').readinfo()['node'] + if node is None or node not in repo: + with ui.configoverride({('ui', 'quiet'): True}): + shelvedfile(repo, basename, 'hg').applybundle() shelvectx = repo['tip'] + else: + shelvectx = repo[node] + return repo, shelvectx def _rebaserestoredcommit(ui, repo, opts, tr, oldtiprev, basename, pctx,