##// END OF EJS Templates
merge with default
merge with default

File last commit:

r49116:bf11ff22 default
r49136:a44bb185 merge 6.0rc0 stable
Show More
test-dirstate-race2.t
48 lines | 1.3 KiB | text/troff | Tads3Lexer
/ tests / test-dirstate-race2.t
Simon Sapin
dirstate: Remove the flat Rust DirstateMap implementation...
r48882 #testcases dirstate-v1 dirstate-v2
Simon Sapin
dirstate-tree: Add a dirstate-v1-tree variant of some tests...
r47900
Simon Sapin
dirstate-v2: Add a variant of some tests, that uses the new format...
r48056 #if dirstate-v2
dirstate-v2: add an option to prevent unintentional slow dirstate-v2...
r49049 $ cat >> $HGRCPATH << EOF
> [format]
dirstate-v2: freeze the on-disk format...
r49116 > exp-rc-dirstate-v2=1
dirstate-v2: add an option to prevent unintentional slow dirstate-v2...
r49049 > [storage]
> dirstate-v2.slow-path=allow
> EOF
Simon Sapin
dirstate-v2: Add a variant of some tests, that uses the new format...
r48056 #endif
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
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
merge: fix race that could cause wrong size in dirstate...
r42656 and hg writing the dirstate. The dirstate is correct nonetheless, and
so hg status correctly shows a as clean.
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
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
merge: fix race that could cause wrong size in dirstate...
r42656 n 644 2 (set |unset) a (re)
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
r42654 $ echo a > a; hg status; hg diff