56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='check problems with relative GIT_DIR
 | 
						|
 | 
						|
This test creates a working tree state with a file and subdir:
 | 
						|
 | 
						|
  top (committed several times)
 | 
						|
  subdir (a subdirectory)
 | 
						|
 | 
						|
It creates a commit-hook and tests it, then moves .git
 | 
						|
into the subdir while keeping the worktree location,
 | 
						|
and tries commits from the top and the subdir, checking
 | 
						|
that the commit-hook still gets called.'
 | 
						|
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
COMMIT_FILE="$(pwd)/output"
 | 
						|
export COMMIT_FILE
 | 
						|
 | 
						|
test_expect_success 'Setting up post-commit hook' '
 | 
						|
mkdir -p .git/hooks &&
 | 
						|
echo >.git/hooks/post-commit "#!/bin/sh
 | 
						|
touch \"\${COMMIT_FILE}\"
 | 
						|
echo Post commit hook was called." &&
 | 
						|
chmod +x .git/hooks/post-commit'
 | 
						|
 | 
						|
test_expect_success 'post-commit hook used ordinarily' '
 | 
						|
echo initial >top &&
 | 
						|
git add top &&
 | 
						|
git commit -m initial &&
 | 
						|
test -r "${COMMIT_FILE}"
 | 
						|
'
 | 
						|
 | 
						|
rm -rf "${COMMIT_FILE}"
 | 
						|
mkdir subdir
 | 
						|
mv .git subdir
 | 
						|
 | 
						|
test_expect_success 'post-commit-hook created and used from top dir' '
 | 
						|
echo changed >top &&
 | 
						|
git --git-dir subdir/.git add top &&
 | 
						|
git --git-dir subdir/.git commit -m topcommit &&
 | 
						|
test -r "${COMMIT_FILE}"
 | 
						|
'
 | 
						|
 | 
						|
rm -rf "${COMMIT_FILE}"
 | 
						|
 | 
						|
test_expect_success 'post-commit-hook from sub dir' '
 | 
						|
echo changed again >top &&
 | 
						|
cd subdir &&
 | 
						|
git --git-dir .git --work-tree .. add ../top &&
 | 
						|
git --git-dir .git --work-tree .. commit -m subcommit &&
 | 
						|
test -r "${COMMIT_FILE}"
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |