diff --git a/hgext3rd/fbamend/hiddenoverride.py b/hgext3rd/fbamend/hiddenoverride.py --- a/hgext3rd/fbamend/hiddenoverride.py +++ b/hgext3rd/fbamend/hiddenoverride.py @@ -18,6 +18,7 @@ lock as lockmod, obsolete, repoview, + scmutil, util, vfs as vfsmod, ) @@ -26,6 +27,7 @@ extensions.wrapfunction(repoview, 'pinnedrevs', pinnedrevs) extensions.wrapfunction(dispatch, 'runcommand', runcommand) extensions.wrapfunction(obsolete, 'createmarkers', createmarkers) + extensions.wrapfunction(scmutil, 'cleanupnodes', cleanupnodes) def pinnedrevs(orig, repo): revs = orig(repo) @@ -144,3 +146,12 @@ pass unfi._tounpinnodes = tounpin return orig(repo, rels, *args, **kwargs) + +def cleanupnodes(orig, repo, mapping, *args, **kwargs): + # this catches cases where cleanupnodes is called but createmarkers is not + # called. unpin nodes from mapping + unfi = repo.unfiltered() + tounpin = getattr(unfi, '_tounpinnodes', set()) + tounpin.update(mapping) + unfi._tounpinnodes = tounpin + return orig(repo, mapping, *args, **kwargs) diff --git a/tests/test-fbamend-hiddenoverride.t b/tests/test-fbamend-hiddenoverride.t --- a/tests/test-fbamend-hiddenoverride.t +++ b/tests/test-fbamend-hiddenoverride.t @@ -223,7 +223,5 @@ $ hg uncommit $ hg log -T '{desc}' -G - x A - | @ Z