[PATCH 16 of 19] snapshot: refine candidate snapshot base upward

Yuya Nishihara yuya at tcha.org
Thu Sep 13 09:24:30 EDT 2018


On Sat, 08 Sep 2018 12:57:10 +0200, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1536333456 14400
> #      Fri Sep 07 11:17:36 2018 -0400
> # Node ID 2ad2e932a5e2bb5bbf2bac7b7d3870ba969c07d6
> # Parent  45a29cbc741ec23c1c3c98227c5ca2fcf6f0a3ff
> # EXP-Topic sparse-snapshot
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 2ad2e932a5e2
> snapshot: refine candidate snapshot base upward

I got cryptic revlog error around this change.

Unscientific STR:

$ hg clone https://www.mercurial-scm.org/repo/evolve/ \
> -r7b129ce23fad -r2c60ad0d54a9 --config format.usegeneraldelta=0
destination directory: evolve
adding changesets
adding manifests
adding file changes
added 3872 changesets with 7552 changes to 419 files (+1 heads)
new changesets bbeef801409c:2c60ad0d54a9
updating to branch default
272 files updated, 0 files merged, 0 files removed, 0 files unresolved

$ cd evolve

$ hg pull --traceback
searching for changes
adding changesets
adding manifests
transaction abort!
rollback completed
Traceback (most recent call last):
  File "mercurial/scmutil.py", line 164, in callcatch
    return func()
  File "mercurial/dispatch.py", line 350, in _runcatchfunc
    return _dispatch(req)
  File "mercurial/dispatch.py", line 987, in _dispatch
    cmdpats, cmdoptions)
  File "mercurial/dispatch.py", line 733, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "mercurial/dispatch.py", line 995, in _runcommand
    return cmdfunc()
  File "mercurial/dispatch.py", line 984, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "mercurial/util.py", line 1532, in check
    return func(*args, **kwargs)
  File "mercurial/util.py", line 1532, in check
    return func(*args, **kwargs)
  File "hgext/mq.py", line 3602, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "mercurial/util.py", line 1532, in check
    return func(*args, **kwargs)
  File "mercurial/util.py", line 1532, in check
    return func(*args, **kwargs)
  File "hgext/rebase.py", line 1843, in pullrebase
    ret = orig(ui, repo, *args, **opts)
  File "mercurial/util.py", line 1532, in check
    return func(*args, **kwargs)
  File "mercurial/commands.py", line 4238, in pull
    opargs=pullopargs).cgresult
  File "mercurial/exchange.py", line 1494, in pull
    _fullpullbundle2(repo, pullop)
  File "mercurial/exchange.py", line 1434, in _fullpullbundle2
    _pullbundle2(pullop)
  File "mercurial/exchange.py", line 1677, in _pullbundle2
    bundle2.processbundle(pullop.repo, bundle, op=op)
  File "mercurial/bundle2.py", line 460, in processbundle
    processparts(repo, op, unbundler)
  File "mercurial/bundle2.py", line 467, in processparts
    _processpart(op, part)
  File "mercurial/bundle2.py", line 534, in _processpart
    handler(op, part)
  File "mercurial/bundle2.py", line 1805, in handlechangegroup
    expectedtotal=nbchangesets, **extrakwargs)
  File "mercurial/bundle2.py", line 470, in _processchangegroup
    ret = cg.apply(op.repo, tr, source, url, **kwargs)
  File "mercurial/changegroup.py", line 329, in apply
    self._unpackmanifests(repo, revmap, trp, progress)
  File "mercurial/changegroup.py", line 256, in _unpackmanifests
    repo.manifestlog.getstorage(b'').addgroup(deltas, revmap, trp)
  File "mercurial/manifest.py", line 1457, in addgroup
    addrevisioncb=addrevisioncb)
  File "mercurial/revlog.py", line 2100, in addgroup
    deltacomputer=deltacomputer)
  File "mercurial/revlog.py", line 1968, in _addrevision
    deltainfo = deltacomputer.finddeltainfo(revinfo, fh)
  File "mercurial/revlogutils/deltas.py", line 888, in finddeltainfo
    candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh)
  File "mercurial/revlogutils/deltas.py", line 806, in _builddeltainfo
    delta = self._builddeltadiff(base, revinfo, fh)
  File "mercurial/revlogutils/deltas.py", line 789, in _builddeltadiff
    t = self.buildtext(revinfo, fh)
  File "mercurial/revlogutils/deltas.py", line 784, in buildtext
    revinfo.flags, revinfo.node)
  File "mercurial/revlogutils/deltas.py", line 454, in _textfromdelta
    basetext = revlog.revision(baserev, _df=fh, raw=False)
  File "mercurial/revlog.py", line 1638, in revision
    self.checkhash(text, node, rev=rev)
  File "mercurial/revlog.py", line 1726, in checkhash
    % (self.indexfile, pycompat.bytestr(revornode)))
RevlogError: integrity check failed on 00manifest.i:2367
abort: integrity check failed on 00manifest.i:2367!

This happens on pull. I got a similar error on update, commit, and shelve,
but I can't reproduce them anymore. In any cases, "hg verify" passed, so
the repository storage should be intact.


More information about the Mercurial-devel mailing list