diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py index a58d8936647aa270854cd919fe8e8b2da1c1c669_bWVyY3VyaWFsL2xvY2FscmVwby5weQ==..4d9f7dd2ac822c1e4efde421235df2a00c8c6801_bWVyY3VyaWFsL2xvY2FscmVwby5weQ== 100644 --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1688,5 +1688,9 @@ "changegroupsubset.")) else: cg = remote.changegroupsubset(fetch, heads, 'pull') - clstart = len(self.changelog) + # we use unfiltered changelog here because hidden revision must + # be taken in account for phase synchronization. They may + # becomes public and becomes visible again. + cl = self.unfiltered().changelog + clstart = len(cl) result = self.addchangegroup(cg, 'pull', remote.url()) @@ -1692,6 +1696,6 @@ result = self.addchangegroup(cg, 'pull', remote.url()) - clend = len(self.changelog) - added = [self.changelog.node(r) for r in xrange(clstart, clend)] + clend = len(cl) + added = [cl.node(r) for r in xrange(clstart, clend)] # compute target subset if heads is None: diff --git a/tests/test-obsolete-changeset-exchange.t b/tests/test-obsolete-changeset-exchange.t index a58d8936647aa270854cd919fe8e8b2da1c1c669_dGVzdHMvdGVzdC1vYnNvbGV0ZS1jaGFuZ2VzZXQtZXhjaGFuZ2UudA==..4d9f7dd2ac822c1e4efde421235df2a00c8c6801_dGVzdHMvdGVzdC1vYnNvbGV0ZS1jaGFuZ2VzZXQtZXhjaGFuZ2UudA== 100644 --- a/tests/test-obsolete-changeset-exchange.t +++ b/tests/test-obsolete-changeset-exchange.t @@ -53,3 +53,23 @@ crosschecking files in changesets and manifests checking files 2 files, 2 changesets, 2 total revisions + +Adding a changeset going extinct locally +------------------------------------------ + +Pull a changeset that will immediatly goes extinct (because you already have a +marker to obsolete him) +(test resolution of issue3788) + + $ hg phase --draft --force f89bcc95eba5 + $ hg phase -R ../other --draft --force f89bcc95eba5 + $ hg commit --amend -m "A''" + $ hg --hidden --config extensions.mq= strip --no-backup f89bcc95eba5 + $ hg pull ../other + pulling from ../other + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 1 files (+1 heads) + (run 'hg heads' to see heads, 'hg merge' to merge)