# HG changeset patch # User David Soria Parra # Date 1383885386 28800 # Node ID 99c4b8f79324ad2ca00bf08228c87a2b40cec2af # Parent 8a021cd38719a4d4729027e44b5e0d9ea1144174 shelve: unshelve using an unfiltered repository when evolve is enabled and a hidden obsolete changeset exists in the repository, the strip during unshelve will fail due to filtered revs. we use an unfiltered repository like to repair.strip to strip the proper nodes. diff -r 8a021cd38719 -r 99c4b8f79324 hgext/shelve.py --- a/hgext/shelve.py Thu Nov 07 01:56:40 2013 +0100 +++ b/hgext/shelve.py Thu Nov 07 20:36:26 2013 -0800 @@ -610,7 +610,7 @@ # but it doesn't update the inmemory structures, so addchangegroup # hooks still fire and try to operate on the missing commits. # Clean up manually to prevent this. - repo.changelog.strip(oldtiprev, tr) + repo.unfiltered().changelog.strip(oldtiprev, tr) unshelvecleanup(ui, repo, basename, opts) finally: diff -r 8a021cd38719 -r 99c4b8f79324 tests/test-shelve.t --- a/tests/test-shelve.t Thu Nov 07 01:56:40 2013 +0100 +++ b/tests/test-shelve.t Thu Nov 07 20:36:26 2013 -0800 @@ -520,4 +520,23 @@ $ hg status A d +test bug 4073 we need to enable obsolete markers for it + + $ cat > ../obs.py << EOF + > import mercurial.obsolete + > mercurial.obsolete._enabled = True + > EOF + $ echo '[extensions]' >> $HGRCPATH + $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH + $ hg shelve + shelved as default + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg debugobsolete `hg --debug id -i -r 1` + $ hg unshelve + unshelving change 'default' + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 2 files (+1 heads) + $ cd ..