Comments
Patch
@@ -181,7 +181,22 @@ def checkexec(path):
try:
EXECFLAGS = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
- cachedir = os.path.join(path, '.hg', 'cache')
+ basedir = os.path.join(path, '.hg')
+ cachedir = os.path.join(basedir, 'cache')
+ storedir = os.path.join(basedir, 'store')
+ if not os.path.exists(cachedir):
+ try:
+ # we want to create the 'cache' directory, not the '.hg' one.
+ # Automatically creating '.hg' directory could silently spawn
+ # invalid Mercurial repositories. That seems like a bad idea.
+ os.mkdir(cachedir)
+ if os.path.exists(storedir):
+ copymode(storedir, cachedir)
+ else:
+ copymode(basedir, cachedir)
+ except (IOError, OSError):
+ # we other fallback logic triggers
+ pass
if os.path.isdir(cachedir):
checkisexec = os.path.join(cachedir, 'checkisexec')
checknoexec = os.path.join(cachedir, 'checknoexec')
@@ -88,6 +88,9 @@ Non store repo:
.hg/00manifest.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/checkisexec
+ .hg/cache/checklink
+ .hg/cache/checklink-target
.hg/cache/manifestfulltextcache (reporevlogstore !)
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
@@ -122,6 +125,9 @@ Non fncache repo:
.hg/00changelog.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/checkisexec
+ .hg/cache/checklink
+ .hg/cache/checklink-target
.hg/cache/manifestfulltextcache (reporevlogstore !)
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
@@ -69,6 +69,9 @@ new directories are setgid
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
@@ -22,16 +22,21 @@ share shouldn't have a store dir
$ test -d .hg/store
[1]
-share shouldn't have a cache dir, original repo should
+share shouldn't have a full cache dir, original repo should
$ hg branches
default 0:d3873e73d99e
$ hg tags
tip 0:d3873e73d99e
- $ test -d .hg/cache
- [1]
+ $ ls -1 .hg/cache
+ checkisexec
+ checklink
+ checklink-target
$ ls -1 ../repo1/.hg/cache
branch2-served
+ checkisexec
+ checklink
+ checklink-target
manifestfulltextcache (reporevlogstore !)
rbc-names-v1
rbc-revs-v1