Mercurial > hg
view tests/test-remotefilelog-blame.t @ 49958:96e526fe5fb0
dirstate: invalidate changes when parent-change fails
When an error occurs during changing parents, we should invalidate all dirstate
modifications and reload the dirstate. This is currently done by a `unlock`
callback on the `wlock`.
To fix this anomaly, we start dealing with the error directly in the context
manager and its potential nesting.
The "hard" part is to make sure that, when the parent-change context are nested,
we and higher level nesting do not continue to use the invalidated dirstate.
We introduce dedicated code to enforce that.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 13 Dec 2022 11:39:44 +0100 |
parents | 864f9f63d3ed |
children |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" $ hg init master $ cd master $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > x $ hg commit -qAm x $ echo y >> x $ hg commit -qAm y $ echo z >> x $ hg commit -qAm z $ echo a > a $ hg commit -qAm a $ cd .. $ hgcloneshallow ssh://user@dummy/master shallow -q 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) $ cd shallow Test blame $ hg blame x 0: x 1: y 2: z 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) Test grepping the working directory. $ hg grep --all-files x x:x $ echo foo >> x $ hg grep --all-files x x:x