test-dirstate-race2.t
45 lines
| 1.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-dirstate-race2.t
Simon Sapin
|
r47900 | #testcases dirstate-v1 dirstate-v1-tree | ||
#if dirstate-v1-tree | ||||
#require rust | ||||
$ echo '[experimental]' >> $HGRCPATH | ||||
$ echo 'dirstate-tree.in-memory=1' >> $HGRCPATH | ||||
#endif | ||||
Valentin Gatien-Baron
|
r42654 | 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 | ||||
Valentin Gatien-Baron
|
r42656 | and hg writing the dirstate. The dirstate is correct nonetheless, and | ||
so hg status correctly shows a as clean. | ||||
Valentin Gatien-Baron
|
r42654 | |||
$ 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 | ||||
Valentin Gatien-Baron
|
r42656 | n 644 2 (set |unset) a (re) | ||
Valentin Gatien-Baron
|
r42654 | $ echo a > a; hg status; hg diff | ||