git-lfs/t/t-post-commit.sh
brian m. carlson 9e006ac4e2
Rename default branch in tests to "main"
Currently, our default branch in tests is "master".  This is the Git
default, but the Git default will likely change in the future, so it
makes sense to update our testsuite to be explicit about the branch
name.  We'll ensure this continues by building against older versions of
Git as well as newer versions.

We use "main" for the new branch name, since that's the proposed value
upstream.

This commit was made entirely by automated means using the following
command:

  git grep -l master t | xargs sed -i -e 's/master/main/g'
2020-07-08 15:38:17 +00:00

107 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
. "$(dirname "$0")/testlib.sh"
begin_test "post-commit"
(
set -e
reponame="$(basename "$0" ".sh")"
setup_remote_repo "$reponame"
clone_repo "$reponame" "$reponame"
git lfs track --lockable "*.dat"
git lfs track "*.big" # not lockable
git add .gitattributes
git commit -m "add git attributes"
echo "Come with me" > pcfile1.dat
echo "and you'll be" > pcfile2.dat
echo "in a world" > pcfile3.big
echo "of pure imagination" > pcfile4.big
git add *.dat
git commit -m "Committed large files"
# New lockable files should have been made read-only now since not locked
refute_file_writeable pcfile1.dat
refute_file_writeable pcfile2.dat
assert_file_writeable pcfile3.big
assert_file_writeable pcfile4.big
git push -u origin main
# now lock files, then edit
git lfs lock pcfile1.dat
git lfs lock pcfile2.dat
echo "Take a look" > pcfile1.dat
echo "and you'll see" > pcfile2.dat
git add pcfile1.dat pcfile2.dat
git commit -m "Updated"
# files should remain writeable since locked
assert_file_writeable pcfile1.dat
assert_file_writeable pcfile2.dat
)
end_test
begin_test "post-commit (locked file outside of LFS)"
(
set -e
reponame="post-commit-external"
setup_remote_repo "$reponame"
clone_repo "$reponame" "$reponame"
git lfs install
# This step is intentionally done in two commits, due to a known bug bug in
# the post-checkout process LFS performs. It compares changed files from HEAD,
# which is an invalid previous state for the initial commit of a repository.
echo "*.dat lockable" > .gitattributes
git add .gitattributes
git commit -m "initial commit"
echo "hello" > a.dat
git add a.dat
assert_file_writeable a.dat
git commit -m "add a.dat"
refute_file_writeable a.dat
)
end_test
begin_test "post-commit does not enter submodules"
(
set -e
reponame="post-commit-submodules"
setup_remote_repo "$reponame"
clone_repo "$reponame" "$reponame"
git lfs track --lockable "*.dat"
git lfs track "*.big" # not lockable
git add .gitattributes
git commit -m "add git attributes"
mkdir submodule
(cd submodule && git init && echo abc >foo && git add foo && git commit -m 'foo')
git submodule add ./submodule submodule
git commit -m 'Add submodule'
echo "Come with me" > pcfile1.dat
echo "and you'll be" > pcfile2.dat
echo "in a world" > pcfile3.big
echo "of pure imagination" > pcfile4.big
git add *.dat
GIT_TRACE=1 git commit -m "Committed large files" 2>&1 | tee output
! grep -E 'filepathfilter:.*submodule/foo' output
)
end_test