diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -23,6 +23,7 @@ dagutil, error, mdiff, + obsolete, phases, pycompat, util, @@ -259,7 +260,15 @@ - number of heads stays the same: 1 """ repo = repo.unfiltered() + + incomingnodes = set() + localonlyobs = obsolete.getoptions(repo)[obsolete.localonlymodeopt] + def csmap(x): + # Don't bother tracking if we don't do anything with data. + if localonlyobs: + incomingnodes.add(x) + repo.ui.debug("add changeset %s\n" % short(x)) return len(cl) @@ -308,6 +317,17 @@ cgnodes = cl.addgroup(deltas, csmap, trp, addrevisioncb=onchangelog) efiles = len(efiles) + # TODO do we need to invalidate visibility caches when we + # remove markers? + if localonlyobs and incomingnodes: + indices = [i for i, t in enumerate(repo.obsstore._all) + if t[0] in incomingnodes] + if indices: + from . import repair + # TODO is # markers == # unhidden changesets? + repo.ui.status(_('unhiding %d changesets\n') % len(indices)) + repair.deleteobsmarkers(repo.obsstore, indices) + if not cgnodes: repo.ui.develwarn('applied empty changegroup', config='warn-empty-changegroup') diff --git a/tests/test-amend.t b/tests/test-amend.t --- a/tests/test-amend.t +++ b/tests/test-amend.t @@ -102,15 +102,13 @@ $ hg unbundle .hg/strip-backup/112478962961-7e959a55-amend.hg adding changesets + unhiding 1 changesets adding manifests adding file changes added 0 changesets with 0 changes to 1 files (run 'hg update' to get a working copy) -TODO obsmarker should be deleted, both versions should be visible - $ hg debugobsolete - 112478962961147124edd43549aedd1a335e44bf be169c7e8dbe21cd10b3d79691cbe7f241e3c21c 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'} $ hg log -G @ changeset: 2:be169c7e8dbe @@ -120,11 +118,10 @@ | date: Thu Jan 01 00:00:00 1970 +0000 | summary: B | - | x changeset: 1:112478962961 + | o changeset: 1:112478962961 |/ tag: B | user: test | date: Thu Jan 01 00:00:00 1970 +0000 - | obsolete: rewritten using amend as 2:be169c7e8dbe | summary: B | o changeset: 0:426bada5c675