Mercurial > hg
view tests/test-contrib-dumprevlog.t @ 47349:7138c863d0a1
dirstate-v2: Skip readdir in status based on directory mtime
When calling `read_dir` during `status` and the directory is found to be
eligible for caching (see code comments), write the directory’s mtime to the
dirstate. The presence of a directory mtime in the dirstate is meaningful
and indicates eligibility.
When an eligible directory mtime is found in the dirstate and `stat()` shows
that the mtime has not changed, `status` can skip calling `read_dir` again
and instead rely on the names of child nodes in the dirstate tree.
The `tempfile` crate is used to create a temporary file in order to use its
modification time as "current time" with the same truncation as other files
and directories would have in their own modification time.
Differential Revision: https://phab.mercurial-scm.org/D10826
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Fri, 28 May 2021 11:48:59 +0200 |
parents | 5abc47d4ca6b |
children | 2f2682f40ea0 |
line wrap: on
line source
#require reporevlogstore $ CONTRIBDIR="$TESTDIR/../contrib" $ hg init repo-a $ cd repo-a $ echo this is file a > a $ hg add a $ hg commit -m first $ echo adding to file a >> a $ hg commit -m second $ echo adding more to file a >> a $ hg commit -m third $ hg verify checking changesets checking manifests crosschecking files in changesets and manifests checking files checked 3 changesets with 3 changes to 1 files Dumping revlog of file a to stdout: $ "$PYTHON" "$CONTRIBDIR/dumprevlog" .hg/store/data/a.i file: .hg/store/data/a.i node: 183d2312b35066fb6b3b449b84efc370d50993d0 linkrev: 0 parents: 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 length: 15 -start- this is file a -end- node: b1047953b6e6b633c0d8197eaa5116fbdfd3095b linkrev: 1 parents: 183d2312b35066fb6b3b449b84efc370d50993d0 0000000000000000000000000000000000000000 length: 32 -start- this is file a adding to file a -end- node: 8c4fd1f7129b8cdec6c7f58bf48fb5237a4030c1 linkrev: 2 parents: b1047953b6e6b633c0d8197eaa5116fbdfd3095b 0000000000000000000000000000000000000000 length: 54 -start- this is file a adding to file a adding more to file a -end- Dump all revlogs to file repo.dump: $ find .hg/store -name "*.i" | sort | xargs "$PYTHON" "$CONTRIBDIR/dumprevlog" > ../repo.dump $ cd .. Undumping into repo-b: $ hg init repo-b $ cd repo-b $ "$PYTHON" "$CONTRIBDIR/undumprevlog" < ../repo.dump .hg/store/00changelog.i .hg/store/00manifest.i .hg/store/data/a.i $ cd .. Rebuild fncache with clone --pull: $ hg clone --pull -U repo-b repo-c requesting all changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files new changesets de1da620e7d8:46946d278c50 Verify: $ hg -R repo-c verify checking changesets checking manifests crosschecking files in changesets and manifests checking files checked 3 changesets with 3 changes to 1 files Compare repos: $ hg -R repo-c incoming repo-a comparing with repo-a searching for changes no changes found [1] $ hg -R repo-a incoming repo-c comparing with repo-c searching for changes no changes found [1]