|  | #!/bin/sh | 
|  |  | 
|  | test_description='blob conversion via gitattributes' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | cat <<\EOF >rot13.sh | 
|  | tr '[a-zA-Z]' '[n-za-mN-ZA-M]' | 
|  | EOF | 
|  | chmod +x rot13.sh | 
|  |  | 
|  | test_expect_success setup ' | 
|  | git config filter.rot13.smudge ./rot13.sh && | 
|  | git config filter.rot13.clean ./rot13.sh && | 
|  |  | 
|  | { | 
|  | echo "*.t filter=rot13" | 
|  | echo "*.i ident" | 
|  | } >.gitattributes && | 
|  |  | 
|  | { | 
|  | echo a b c d e f g h i j k l m | 
|  | echo n o p q r s t u v w x y z | 
|  | echo '\''$Id$'\'' | 
|  | } >test && | 
|  | cat test >test.t && | 
|  | cat test >test.o && | 
|  | cat test >test.i && | 
|  | git add test test.t test.i && | 
|  | rm -f test test.t test.i && | 
|  | git checkout -- test test.t test.i | 
|  | ' | 
|  |  | 
|  | script='s/^\$Id: \([0-9a-f]*\) \$/\1/p' | 
|  |  | 
|  | test_expect_success check ' | 
|  |  | 
|  | cmp test.o test && | 
|  | cmp test.o test.t && | 
|  |  | 
|  | # ident should be stripped in the repository | 
|  | git diff --raw --exit-code :test :test.i && | 
|  | id=$(git rev-parse --verify :test) && | 
|  | embedded=$(sed -ne "$script" test.i) && | 
|  | test "z$id" = "z$embedded" | 
|  | ' | 
|  |  | 
|  | # If an expanded ident ever gets into the repository, we want to make sure that | 
|  | # it is collapsed before being expanded again on checkout | 
|  | test_expect_success expanded_in_repo ' | 
|  | { | 
|  | echo "File with expanded keywords" | 
|  | echo "\$Id\$" | 
|  | echo "\$Id:\$" | 
|  | echo "\$Id: 0000000000000000000000000000000000000000 \$" | 
|  | echo "\$Id: NoSpaceAtEnd\$" | 
|  | echo "\$Id:NoSpaceAtFront \$" | 
|  | echo "\$Id:NoSpaceAtEitherEnd\$" | 
|  | echo "\$Id: NoTerminatingSymbol" | 
|  | } > expanded-keywords && | 
|  |  | 
|  | { | 
|  | echo "File with expanded keywords" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$" | 
|  | echo "\$Id: NoTerminatingSymbol" | 
|  | } > expected-output && | 
|  |  | 
|  | git add expanded-keywords && | 
|  | git commit -m "File with keywords expanded" && | 
|  |  | 
|  | echo "expanded-keywords ident" >> .gitattributes && | 
|  |  | 
|  | rm -f expanded-keywords && | 
|  | git checkout -- expanded-keywords && | 
|  | cat expanded-keywords && | 
|  | cmp expanded-keywords expected-output | 
|  | ' | 
|  |  | 
|  | test_done |