Mercurial > hg
changeset 28186:5ab6f0fde75f
bundlerepo: properly handle hidden linkrev in filelog (issue4945)
The bundlerepository have to do some special magic to handle linkrev of the
bundlerepo filerev. That logic was done from a repoview and obsolescence marker
affecting bundled changeset could lead to a crash. We now ensure we operate on
unfiltered repository.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Mon, 22 Feb 2016 18:35:40 +0100 |
parents | c7e8948627f3 |
children | d3da97e58d42 |
files | mercurial/bundlerepo.py tests/test-obsolete.t |
diffstat | 2 files changed, 71 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bundlerepo.py Wed Feb 17 22:45:01 2016 +0100 +++ b/mercurial/bundlerepo.py Mon Feb 22 18:35:40 2016 +0100 @@ -362,7 +362,8 @@ if f in self.bundlefilespos: self.bundle.seek(self.bundlefilespos[f]) - return bundlefilelog(self.svfs, f, self.bundle, self.changelog.rev) + linkmapper = self.unfiltered().changelog.rev + return bundlefilelog(self.svfs, f, self.bundle, linkmapper) else: return filelog.filelog(self.svfs, f)
--- a/tests/test-obsolete.t Wed Feb 17 22:45:01 2016 +0100 +++ b/tests/test-obsolete.t Mon Feb 22 18:35:40 2016 +0100 @@ -1006,5 +1006,74 @@ (use --hidden to access hidden revisions) [255] +Test ability to pull changeset with locally applying obsolescence markers +(issue4945) + $ cd .. + $ hg init issue4845 + $ cd issue4845 + $ echo foo > f0 + $ hg add f0 + $ hg ci -m '0' + $ echo foo > f1 + $ hg add f1 + $ hg ci -m '1' + $ echo foo > f2 + $ hg add f2 + $ hg ci -m '2' + + $ echo bar > f2 + $ hg commit --amend --config experimetnal.evolution=createmarkers + $ hg log -G + @ 4:b0551702f918 (draft) [tip ] 2 + | + o 1:e016b03fd86f (draft) [ ] 1 + | + o 0:a78f55e5508c (draft) [ ] 0 + + $ hg log -G --hidden + @ 4:b0551702f918 (draft) [tip ] 2 + | + | x 3:f27abbcc1f77 (draft) [ ] temporary amend commit for e008cf283490 + | | + | x 2:e008cf283490 (draft) [ ] 2 + |/ + o 1:e016b03fd86f (draft) [ ] 1 + | + o 0:a78f55e5508c (draft) [ ] 0 + + + $ hg strip -r 1 --config extensions.strip= + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-c41c6bcc-backup.hg (glob) + $ hg log -G + @ 0:a78f55e5508c (draft) [tip ] 0 + + $ hg log -G --hidden + @ 0:a78f55e5508c (draft) [tip ] 0 + + + $ hg pull .hg/strip-backup/* + pulling from .hg/strip-backup/e016b03fd86f-c41c6bcc-backup.hg + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + (run 'hg update' to get a working copy) + $ hg log -G + o 2:b0551702f918 (draft) [tip ] 2 + | + o 1:e016b03fd86f (draft) [ ] 1 + | + @ 0:a78f55e5508c (draft) [ ] 0 + + $ hg log -G --hidden + o 2:b0551702f918 (draft) [tip ] 2 + | + o 1:e016b03fd86f (draft) [ ] 1 + | + @ 0:a78f55e5508c (draft) [ ] 0 + +