Mercurial > hg
view tests/test-dirstate-race2.t @ 47076:08e26ef4ad35
changegroup: don't limit cgv4 to revlogv2 repos
To help the transition from revlogv1 to revlogv2, we need to be able to enable
cgv4 for revlogv1 repos, so that revlogv2 clients can handle adding/removing
sidedata over the wire.
Differential Revision: https://phab.mercurial-scm.org/D10342
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 08 Apr 2021 16:34:11 +0200 |
parents | 87a34c767384 |
children | 93eb6c8035a9 |
line wrap: on
line source
Checking the size/permissions/file-type of files stored in the dirstate after an update where the files are changed concurrently outside of hg's control. $ hg init repo $ cd repo $ echo a > a $ hg commit -qAm _ $ echo aa > a $ hg commit -m _ $ hg debugdirstate --no-dates n 644 3 (set |unset) a (re) $ cat >> $TESTTMP/dirstaterace.py << EOF > from mercurial import ( > extensions, > merge, > ) > def extsetup(ui): > extensions.wrapfunction(merge, 'applyupdates', wrap) > def wrap(orig, *args, **kwargs): > res = orig(*args, **kwargs) > with open("a", "w"): > pass # just truncate the file > return res > EOF Do an update where file 'a' is changed between hg writing it to disk and hg writing the dirstate. The dirstate is correct nonetheless, and so hg status correctly shows a as clean. $ hg up -r 0 --config extensions.race=$TESTTMP/dirstaterace.py 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg debugdirstate --no-dates n 644 2 (set |unset) a (re) $ echo a > a; hg status; hg diff