github.com/x-oss-byte/git-lfs@v2.5.2+incompatible/t/t-post-commit.sh (about) 1 #!/usr/bin/env bash 2 3 . "$(dirname "$0")/testlib.sh" 4 5 begin_test "post-commit" 6 ( 7 set -e 8 9 reponame="$(basename "$0" ".sh")" 10 setup_remote_repo "$reponame" 11 12 clone_repo "$reponame" "$reponame" 13 14 git lfs track --lockable "*.dat" 15 git lfs track "*.big" # not lockable 16 git add .gitattributes 17 git commit -m "add git attributes" 18 19 echo "Come with me" > pcfile1.dat 20 echo "and you'll be" > pcfile2.dat 21 echo "in a world" > pcfile3.big 22 echo "of pure imagination" > pcfile4.big 23 24 git add *.dat 25 git commit -m "Committed large files" 26 27 # New lockable files should have been made read-only now since not locked 28 refute_file_writeable pcfile1.dat 29 refute_file_writeable pcfile2.dat 30 assert_file_writeable pcfile3.big 31 assert_file_writeable pcfile4.big 32 33 git push -u origin master 34 35 # now lock files, then edit 36 git lfs lock pcfile1.dat 37 git lfs lock pcfile2.dat 38 39 echo "Take a look" > pcfile1.dat 40 echo "and you'll see" > pcfile2.dat 41 42 git add pcfile1.dat pcfile2.dat 43 git commit -m "Updated" 44 45 # files should remain writeable since locked 46 assert_file_writeable pcfile1.dat 47 assert_file_writeable pcfile2.dat 48 49 ) 50 end_test 51 52 begin_test "post-commit (locked file outside of LFS)" 53 ( 54 set -e 55 56 reponame="post-commit-external" 57 setup_remote_repo "$reponame" 58 clone_repo "$reponame" "$reponame" 59 60 git lfs install 61 62 # This step is intentionally done in two commits, due to a known bug bug in 63 # the post-checkout process LFS performs. It compares changed files from HEAD, 64 # which is an invalid previous state for the initial commit of a repository. 65 echo "*.dat lockable" > .gitattributes 66 git add .gitattributes 67 git commit -m "initial commit" 68 69 echo "hello" > a.dat 70 git add a.dat 71 assert_file_writeable a.dat 72 git commit -m "add a.dat" 73 74 refute_file_writeable a.dat 75 ) 76 end_test