# HG changeset patch # User Boris Feld # Date 1542298103 -3600 # Node ID 47e3f554df35245c95cbb87a30cc8ba557259427 # Parent 74a9f428227ec4989f36846ef5c42ee46e32d96f check-exec: write file in 'wcache' instead of 'cache' Some cache are relevant or affected by the working copy used. So the `.hg/cache` directory is not the best place for them because multiple shared repository can end up fighting over them. To address this issue, we introduce a new 'wcache' directory to host this kind of cache. The first user are the `checkisexec` type file. These files describe property of the working copy and fit the use-case well. diff -r 74a9f428227e -r 47e3f554df35 mercurial/posix.py --- a/mercurial/posix.py Fri Nov 23 06:09:44 2018 +0100 +++ b/mercurial/posix.py Thu Nov 15 17:08:23 2018 +0100 @@ -182,7 +182,7 @@ try: EXECFLAGS = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH basedir = os.path.join(path, '.hg') - cachedir = os.path.join(basedir, 'cache') + cachedir = os.path.join(basedir, 'wcache') storedir = os.path.join(basedir, 'store') if not os.path.exists(cachedir): try: @@ -255,7 +255,7 @@ # mktemp is not racy because symlink creation will fail if the # file already exists while True: - cachedir = os.path.join(path, '.hg', 'cache') + cachedir = os.path.join(path, '.hg', 'wcache') checklink = os.path.join(cachedir, 'checklink') # try fast path, read only if os.path.islink(checklink): diff -r 74a9f428227e -r 47e3f554df35 tests/test-clone.t --- a/tests/test-clone.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-clone.t Thu Nov 15 17:08:23 2018 +0100 @@ -43,10 +43,6 @@ default 10:a7949464abda $ ls .hg/cache branch2-served - checkisexec (execbit !) - checklink (symlink !) - checklink-target (symlink !) - checknoexec (execbit !) manifestfulltextcache (reporevlogstore !) rbc-names-v1 rbc-revs-v1 @@ -62,9 +58,6 @@ $ ls .hg/cache branch2-served - checkisexec (execbit !) - checklink (symlink !) - checklink-target (symlink !) rbc-names-v1 rbc-revs-v1 diff -r 74a9f428227e -r 47e3f554df35 tests/test-fncache.t --- a/tests/test-fncache.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-fncache.t Thu Nov 15 17:08:23 2018 +0100 @@ -88,9 +88,6 @@ .hg/00manifest.i .hg/cache .hg/cache/branch2-served - .hg/cache/checkisexec (execbit !) - .hg/cache/checklink (symlink !) - .hg/cache/checklink-target (symlink !) .hg/cache/manifestfulltextcache (reporevlogstore !) .hg/cache/rbc-names-v1 .hg/cache/rbc-revs-v1 @@ -110,6 +107,10 @@ .hg/undo.desc .hg/undo.dirstate .hg/undo.phaseroots + .hg/wcache + .hg/wcache/checkisexec + .hg/wcache/checklink + .hg/wcache/checklink-target $ cd .. Non fncache repo: @@ -125,9 +126,6 @@ .hg/00changelog.i .hg/cache .hg/cache/branch2-served - .hg/cache/checkisexec (execbit !) - .hg/cache/checklink (symlink !) - .hg/cache/checklink-target (symlink !) .hg/cache/manifestfulltextcache (reporevlogstore !) .hg/cache/rbc-names-v1 .hg/cache/rbc-revs-v1 @@ -150,6 +148,10 @@ .hg/undo.branch .hg/undo.desc .hg/undo.dirstate + .hg/wcache + .hg/wcache/checkisexec + .hg/wcache/checklink + .hg/wcache/checklink-target $ cd .. Encoding of reserved / long paths in the store diff -r 74a9f428227e -r 47e3f554df35 tests/test-hardlinks.t --- a/tests/test-hardlinks.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-hardlinks.t Thu Nov 15 17:08:23 2018 +0100 @@ -239,9 +239,6 @@ 2 r4/.hg/branch 2 r4/.hg/cache/branch2-base 2 r4/.hg/cache/branch2-served - 2 r4/.hg/cache/checkisexec (execbit !) - ? r4/.hg/cache/checklink-target (glob) (symlink !) - 2 r4/.hg/cache/checknoexec (execbit !) 2 r4/.hg/cache/manifestfulltextcache (reporevlogstore !) 2 r4/.hg/cache/rbc-names-v1 2 r4/.hg/cache/rbc-revs-v1 @@ -268,6 +265,9 @@ 2 r4/.hg/undo.branch 2 r4/.hg/undo.desc [24] r4/\.hg/undo\.dirstate (re) + 2 r4/.hg/wcache/checkisexec + 2 r4/.hg/wcache/checklink-target + 2 r4/.hg/wcache/checknoexec 2 r4/d1/data1 2 r4/d1/f2 2 r4/f1 @@ -290,9 +290,6 @@ 1 r4/.hg/branch 2 r4/.hg/cache/branch2-base 2 r4/.hg/cache/branch2-served - 2 r4/.hg/cache/checkisexec (execbit !) - 2 r4/.hg/cache/checklink-target (symlink !) - 2 r4/.hg/cache/checknoexec (execbit !) 2 r4/.hg/cache/manifestfulltextcache (reporevlogstore !) 2 r4/.hg/cache/rbc-names-v1 2 r4/.hg/cache/rbc-revs-v1 @@ -319,6 +316,9 @@ 2 r4/.hg/undo.branch 2 r4/.hg/undo.desc [24] r4/\.hg/undo\.dirstate (re) + 2 r4/.hg/wcache/checkisexec + 2 r4/.hg/wcache/checklink-target + 2 r4/.hg/wcache/checknoexec 2 r4/d1/data1 2 r4/d1/f2 1 r4/f1 diff -r 74a9f428227e -r 47e3f554df35 tests/test-inherit-mode.t --- a/tests/test-inherit-mode.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-inherit-mode.t Thu Nov 15 17:08:23 2018 +0100 @@ -69,9 +69,6 @@ 00600 ./.hg/00changelog.i 00770 ./.hg/cache/ 00660 ./.hg/cache/branch2-served - 00711 ./.hg/cache/checkisexec - 00777 ./.hg/cache/checklink - 00600 ./.hg/cache/checklink-target 00660 ./.hg/cache/manifestfulltextcache (reporevlogstore !) 00660 ./.hg/cache/rbc-names-v1 00660 ./.hg/cache/rbc-revs-v1 @@ -102,6 +99,10 @@ 00660 ./.hg/undo.branch 00660 ./.hg/undo.desc 00660 ./.hg/undo.dirstate + 00770 ./.hg/wcache/ + 00711 ./.hg/wcache/checkisexec + 00777 ./.hg/wcache/checklink + 00600 ./.hg/wcache/checklink-target 00700 ./dir/ 00600 ./dir/bar 00600 ./foo diff -r 74a9f428227e -r 47e3f554df35 tests/test-share.t --- a/tests/test-share.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-share.t Thu Nov 15 17:08:23 2018 +0100 @@ -28,16 +28,15 @@ default 0:d3873e73d99e $ hg tags tip 0:d3873e73d99e - $ ls -1 .hg/cache || true - ls: .hg/cache: $ENOENT$ (no-execbit no-symlink !) + $ test -d .hg/cache + [1] + $ ls -1 .hg/wcache || true + ls: .hg/wcache: $ENOENT$ (no-execbit no-symlink !) checkisexec (execbit !) checklink (symlink !) checklink-target (symlink !) $ ls -1 ../repo1/.hg/cache branch2-served - checkisexec (execbit !) - checklink (symlink !) - checklink-target (symlink !) manifestfulltextcache (reporevlogstore !) rbc-names-v1 rbc-revs-v1 diff -r 74a9f428227e -r 47e3f554df35 tests/test-subrepo.t --- a/tests/test-subrepo.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-subrepo.t Thu Nov 15 17:08:23 2018 +0100 @@ -1246,15 +1246,16 @@ ../shared/subrepo-2/.hg ../shared/subrepo-2/.hg/branch ../shared/subrepo-2/.hg/cache - ../shared/subrepo-2/.hg/cache/checkisexec (execbit !) - ../shared/subrepo-2/.hg/cache/checklink (symlink !) - ../shared/subrepo-2/.hg/cache/checklink-target (symlink !) ../shared/subrepo-2/.hg/cache/storehash ../shared/subrepo-2/.hg/cache/storehash/* (glob) ../shared/subrepo-2/.hg/dirstate ../shared/subrepo-2/.hg/hgrc ../shared/subrepo-2/.hg/requires ../shared/subrepo-2/.hg/sharedpath + ../shared/subrepo-2/.hg/wcache + ../shared/subrepo-2/.hg/wcache/checkisexec + ../shared/subrepo-2/.hg/wcache/checklink + ../shared/subrepo-2/.hg/wcache/checklink-target ../shared/subrepo-2/file $ hg -R ../shared in abort: repository default not found! diff -r 74a9f428227e -r 47e3f554df35 tests/test-tags.t --- a/tests/test-tags.t Fri Nov 23 06:09:44 2018 +0100 +++ b/tests/test-tags.t Thu Nov 15 17:08:23 2018 +0100 @@ -698,9 +698,6 @@ $ ls tagsclient/.hg/cache branch2-base - checkisexec (execbit !) - checklink (symlink !) - checklink-target (symlink !) hgtagsfnodes1 rbc-names-v1 rbc-revs-v1 @@ -725,9 +722,6 @@ $ ls tagsclient/.hg/cache branch2-base - checkisexec (execbit !) - checklink (symlink !) - checklink-target (symlink !) hgtagsfnodes1 rbc-names-v1 rbc-revs-v1