mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
900647104e
We need to get the correct mode when blame reads the source from the working tree, the index, or trees. This allows us to omit running textconv filters on symbolic links. Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru> Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
99 lines
2.3 KiB
Bash
Executable File
99 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git cat-file textconv support'
|
|
. ./test-lib.sh
|
|
|
|
cat >helper <<'EOF'
|
|
#!/bin/sh
|
|
grep -q '^bin: ' "$1" || { echo "E: $1 is not \"binary\" file" 1>&2; exit 1; }
|
|
sed 's/^bin: /converted: /' "$1"
|
|
EOF
|
|
chmod +x helper
|
|
|
|
test_expect_success 'setup ' '
|
|
echo "bin: test" >one.bin &&
|
|
if test_have_prereq SYMLINKS; then
|
|
ln -s one.bin symlink.bin
|
|
fi &&
|
|
git add . &&
|
|
GIT_AUTHOR_NAME=Number1 git commit -a -m First --date="2010-01-01 18:00:00" &&
|
|
echo "bin: test version 2" >one.bin &&
|
|
GIT_AUTHOR_NAME=Number2 git commit -a -m Second --date="2010-01-01 20:00:00"
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
fatal: git cat-file --textconv: unable to run textconv on :one.bin
|
|
EOF
|
|
|
|
test_expect_success 'no filter specified' '
|
|
git cat-file --textconv :one.bin 2>result
|
|
test_cmp expected result
|
|
'
|
|
|
|
test_expect_success 'setup textconv filters' '
|
|
echo "*.bin diff=test" >.gitattributes &&
|
|
git config diff.test.textconv ./helper &&
|
|
git config diff.test.cachetextconv false
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
bin: test version 2
|
|
EOF
|
|
|
|
test_expect_success 'cat-file without --textconv' '
|
|
git cat-file blob :one.bin >result &&
|
|
test_cmp expected result
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
bin: test
|
|
EOF
|
|
|
|
test_expect_success 'cat-file without --textconv on previous commit' '
|
|
git cat-file -p HEAD^:one.bin >result &&
|
|
test_cmp expected result
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
converted: test version 2
|
|
EOF
|
|
|
|
test_expect_success 'cat-file --textconv on last commit' '
|
|
git cat-file --textconv :one.bin >result &&
|
|
test_cmp expected result
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
converted: test
|
|
EOF
|
|
|
|
test_expect_success 'cat-file --textconv on previous commit' '
|
|
git cat-file --textconv HEAD^:one.bin >result &&
|
|
test_cmp expected result
|
|
'
|
|
|
|
test_expect_success SYMLINKS 'cat-file without --textconv (symlink)' '
|
|
git cat-file blob :symlink.bin >result &&
|
|
printf "%s" "one.bin" >expected
|
|
test_cmp expected result
|
|
'
|
|
|
|
|
|
test_expect_success SYMLINKS 'cat-file --textconv on index (symlink)' '
|
|
! git cat-file --textconv :symlink.bin 2>result &&
|
|
cat >expected <<\EOF &&
|
|
fatal: git cat-file --textconv: unable to run textconv on :symlink.bin
|
|
EOF
|
|
test_cmp expected result
|
|
'
|
|
|
|
test_expect_success SYMLINKS 'cat-file --textconv on HEAD (symlink)' '
|
|
! git cat-file --textconv HEAD:symlink.bin 2>result &&
|
|
cat >expected <<EOF &&
|
|
fatal: git cat-file --textconv: unable to run textconv on HEAD:symlink.bin
|
|
EOF
|
|
test_cmp expected result
|
|
'
|
|
|
|
test_done
|