Mercurial > hg
view tests/test-narrow-debugcommands.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 | ce0bc2952e2a |
children | ccd76e292be5 |
line wrap: on
line source
$ . "$TESTDIR/narrow-library.sh" $ hg init repo $ cd repo $ cat << EOF > .hg/store/narrowspec > [include] > path:foo > [exclude] > EOF $ cp .hg/store/narrowspec .hg/narrowspec.dirstate $ echo treemanifest >> .hg/requires $ echo narrowhg-experimental >> .hg/requires $ mkdir -p foo/bar $ echo b > foo/f $ echo c > foo/bar/f $ hg commit -Am hi adding foo/bar/f adding foo/f $ hg debugindex -m rev linkrev nodeid p1 p2 0 0 14a5d056d75a 000000000000 000000000000 $ hg debugindex --dir foo rev linkrev nodeid p1 p2 0 0 e635c7857aef 000000000000 000000000000 $ hg debugindex --dir foo/ rev linkrev nodeid p1 p2 0 0 e635c7857aef 000000000000 000000000000 $ hg debugindex --dir foo/bar rev linkrev nodeid p1 p2 0 0 e091d4224761 000000000000 000000000000 $ hg debugindex --dir foo/bar/ rev linkrev nodeid p1 p2 0 0 e091d4224761 000000000000 000000000000 $ hg debugdata -m 0 foo\x00e635c7857aef92ac761ce5741a99da159abbbb24t (esc) $ hg debugdata --dir foo 0 bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc) f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) $ hg debugdata --dir foo/ 0 bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc) f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) $ hg debugdata --dir foo/bar 0 f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) $ hg debugdata --dir foo/bar/ 0 f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)