D6474: tests: show how the dirstate can end up containing wrong information
valentin.gatienbaron (Valentin Gatien-Baron)
phabricator at mercurial-scm.org
Thu Jun 13 10:03:33 EDT 2019
Closed by commit rHGd9a50456ea3d: tests: show how the dirstate can end up containing wrong information (authored by valentin.gatienbaron).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6474?vs=15461&id=15488
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6474/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6474
AFFECTED FILES
tests/test-dirstate-race2.t
CHANGE DETAILS
diff --git a/tests/test-dirstate-race2.t b/tests/test-dirstate-race2.t
new file mode 100644
--- /dev/null
+++ b/tests/test-dirstate-race2.t
@@ -0,0 +1,39 @@
+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. It results in a corrupted dirstate, which
+stores the wrong size, and thus hg status shows spuriously modified
+files.
+
+ $ 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 0 (set |unset) a (re)
+ $ echo a > a; hg status; hg diff
+ M a
To: valentin.gatienbaron, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list