##// END OF EJS Templates
simplestore: use a custom store for the simple store repo...
simplestore: use a custom store for the simple store repo Before, we used the default store, which was based on fncache and dotencode. After attempting to port tests to work with the simple store, I realized that fncache was more trouble than it is worth. This commit implements a proper store type for the simple repo - one that isn't based off fncache. This causes a number of new test failures because of tests expecting the full fncache store filename encoding. I may extend the store format in a subsequent commit to take the filename encoding parts of fncache that we can take (basically everything except hash encoding, since that isn't reversible). But for now, let's use encoded store. As part of this, we implement proper requirements support for repos created with the simple store. This should have been done from the beginning, as a requirement is needed to lock out clients that don't understand a storage format. A new hghave feature advertising the presence of fncache in repos has been added. Most tests touching the fncache are now conditional on that feature. Other tests have added the optional repo requirement to output. Differential Revision: https://phab.mercurial-scm.org/D3095

File last commit:

r37433:c2c8962a default
r37433:c2c8962a default
Show More
test-inherit-mode.t
160 lines | 3.9 KiB | text/troff | Tads3Lexer
/ tests / test-inherit-mode.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require unix-permissions
Nicolas Dumazet
tests: unify test-inherit-mode
r12096
Matt Mackall
tests: replace exit 80 with #require
r22046 test that new files created in .hg inherit the permissions from .hg/store
Nicolas Dumazet
tests: unify test-inherit-mode
r12096
$ mkdir dir
just in case somebody has a strange $TMPDIR
$ chmod g-s dir
$ cd dir
$ cat >printmodes.py <<EOF
Augie Fackler
tests: update test-inherit-mode to pass our import checker
r33991 > from __future__ import absolute_import, print_function
> import os
> import sys
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 >
> allnames = []
> isdir = {}
> for root, dirs, files in os.walk(sys.argv[1]):
> for d in dirs:
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > name = os.path.join(root, d)
> isdir[name] = 1
> allnames.append(name)
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 > for f in files:
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > name = os.path.join(root, f)
> allnames.append(name)
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 > allnames.sort()
> for name in allnames:
> suffix = name in isdir and '/' or ''
Augie Fackler
tests: update test-inherit-mode to pass our import checker
r33991 > print('%05o %s%s' % (os.lstat(name).st_mode & 0o7777, name, suffix))
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 > EOF
$ cat >mode.py <<EOF
Augie Fackler
tests: update test-inherit-mode to pass our import checker
r33991 > from __future__ import absolute_import, print_function
> import os
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 > import sys
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > print('%05o' % os.lstat(sys.argv[1]).st_mode)
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 > EOF
$ umask 077
$ hg init repo
$ cd repo
$ chmod 0770 .hg/store
before commit
store can be written by the group, other files cannot
store is setgid
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON ../printmodes.py .
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00700 ./.hg/
00600 ./.hg/00changelog.i
00600 ./.hg/requires
00770 ./.hg/store/
$ mkdir dir
$ touch foo dir/bar
$ hg ci -qAm 'add files'
after commit
working dir files can only be written by the owner
files created in .hg can be written by the group
(in particular, store/**, dirstate, branch cache file, undo files)
new directories are setgid
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON ../printmodes.py .
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00700 ./.hg/
00600 ./.hg/00changelog.i
Mads Kiilerich
localrepo: update branchcache in a more reliable way...
r15886 00770 ./.hg/cache/
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 00660 ./.hg/cache/branch2-served
Mads Kiilerich
branchmap: use revbranchcache when updating branch map...
r23786 00660 ./.hg/cache/rbc-names-v1
00660 ./.hg/cache/rbc-revs-v1
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ./.hg/dirstate
FUJIWARA Katsunori
tests: add extra output for fsmonitor at checking under .hg
r33427 00660 ./.hg/fsmonitor.state (fsmonitor !)
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ./.hg/last-message.txt
00600 ./.hg/requires
00770 ./.hg/store/
00660 ./.hg/store/00changelog.i
00660 ./.hg/store/00manifest.i
00770 ./.hg/store/data/
00770 ./.hg/store/data/dir/
00660 ./.hg/store/data/dir/bar.i
00660 ./.hg/store/data/foo.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 00660 ./.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: set new commit in 1-phase
r15483 00660 ./.hg/store/phaseroots
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ./.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 00660 ./.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 00660 ./.hg/store/undo.phaseroots
Laurent Charignon
localrepo: put bookmark move following commit in one transaction...
r26998 00660 ./.hg/undo.backup.dirstate
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 00660 ./.hg/undo.bookmarks
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ./.hg/undo.branch
00660 ./.hg/undo.desc
00660 ./.hg/undo.dirstate
00700 ./dir/
00600 ./dir/bar
00600 ./foo
$ umask 007
$ hg init ../push
before push
group can write everything
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON ../printmodes.py ../push
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00770 ../push/.hg/
00660 ../push/.hg/00changelog.i
00660 ../push/.hg/requires
00770 ../push/.hg/store/
$ umask 077
$ hg -q push ../push
after push
group can still write everything
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON ../printmodes.py ../push
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00770 ../push/.hg/
00660 ../push/.hg/00changelog.i
jfh
move tags.cache and branchheads.cache to a collected cache folder .hg/cache/...
r13272 00770 ../push/.hg/cache/
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 00660 ../push/.hg/cache/branch2-base
Mateusz Kwapich
localrepo: use dirstate savebackup instead of handling dirstate file manually...
r29191 00660 ../push/.hg/dirstate
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ../push/.hg/requires
00770 ../push/.hg/store/
00660 ../push/.hg/store/00changelog.i
00660 ../push/.hg/store/00manifest.i
00770 ../push/.hg/store/data/
00770 ../push/.hg/store/data/dir/
00660 ../push/.hg/store/data/dir/bar.i
00660 ../push/.hg/store/data/foo.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 00660 ../push/.hg/store/fncache (repofncache !)
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ../push/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 00660 ../push/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 00660 ../push/.hg/store/undo.phaseroots
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 00660 ../push/.hg/undo.bookmarks
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 00660 ../push/.hg/undo.branch
00660 ../push/.hg/undo.desc
00660 ../push/.hg/undo.dirstate
Test that we don't lose the setgid bit when we call chmod.
Not all systems support setgid directories (e.g. HFS+), so
just check that directories have the same mode.
$ cd ..
$ hg init setgid
$ cd setgid
$ chmod g+rwx .hg/store
Javi Merino
tests: ignore the return code of chmod in test-inherit-mode...
r16225 $ chmod g+s .hg/store 2> /dev/null || true
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 $ mkdir dir
$ touch dir/file
$ hg ci -qAm 'add dir/file'
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ storemode=`$PYTHON ../mode.py .hg/store`
$ dirmode=`$PYTHON ../mode.py .hg/store/data/dir`
Nicolas Dumazet
tests: unify test-inherit-mode
r12096 $ if [ "$storemode" != "$dirmode" ]; then
> echo "$storemode != $dirmode"
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 > fi
$ cd ..
$ cd .. # g-s dir