Mercurial > public > mercurial-scm > hg
diff mercurial/localrepo.py @ 18498:4d9f7dd2ac82 stable
pull: fix crash when pulling changeset that get hidden locally (issue3788)
When you have obsolescence marker that apply to a pulled changesets, the added
changeset is immediately filtered. Then the list of added changeset needs to be
build against and unfiltered repo.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 29 Jan 2013 15:26:10 +0100 |
parents | f009804e2a43 |
children | 751135cca13c |
line wrap: on
line diff
--- a/mercurial/localrepo.py Tue Jan 29 16:44:51 2013 +0100 +++ b/mercurial/localrepo.py Tue Jan 29 15:26:10 2013 +0100 @@ -1688,10 +1688,14 @@ "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()) - 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: