|  | #!/bin/sh | 
|  | # | 
|  | # Copyright (c) 2014 Alfred Perlstein | 
|  | # | 
|  |  | 
|  | test_description='git svn propset tests' | 
|  |  | 
|  | . ./lib-git-svn.sh | 
|  |  | 
|  | foo_subdir2="subdir/subdir2/foo_subdir2" | 
|  |  | 
|  | set -e | 
|  | mkdir import && | 
|  | (set -e ; cd import | 
|  | mkdir subdir | 
|  | mkdir subdir/subdir2 | 
|  | touch foo 		# for 'add props top level' | 
|  | touch subdir/foo_subdir # for 'add props relative' | 
|  | touch "$foo_subdir2"	# for 'add props subdir' | 
|  | svn_cmd import -m 'import for git svn' . "$svnrepo" >/dev/null | 
|  | ) | 
|  | rm -rf import | 
|  |  | 
|  | test_expect_success 'initialize git svn' ' | 
|  | git svn init "$svnrepo" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'fetch revisions from svn' ' | 
|  | git svn fetch | 
|  | ' | 
|  |  | 
|  | set_props () { | 
|  | subdir="$1" | 
|  | file="$2" | 
|  | shift;shift; | 
|  | (cd "$subdir" && | 
|  | while [ $# -gt 0 ] ; do | 
|  | git svn propset "$1" "$2" "$file" || exit 1 | 
|  | shift;shift; | 
|  | done && | 
|  | echo hello >> "$file" && | 
|  | git commit -m "testing propset" "$file") | 
|  | } | 
|  |  | 
|  | confirm_props () { | 
|  | subdir="$1" | 
|  | file="$2" | 
|  | shift;shift; | 
|  | (set -e ; cd "svn_project/$subdir" && | 
|  | while [ $# -gt 0 ] ; do | 
|  | test "$(svn_cmd propget "$1" "$file")" = "$2" || exit 1 | 
|  | shift;shift; | 
|  | done) | 
|  | } | 
|  |  | 
|  |  | 
|  | #The current implementation has a restriction: | 
|  | #svn propset will be taken as a delta for svn dcommit only | 
|  | #if the file content is also modified | 
|  | test_expect_success 'add props top level' ' | 
|  | set_props "." "foo" "svn:keywords" "FreeBSD=%H" && | 
|  | git svn dcommit && | 
|  | svn_cmd co "$svnrepo" svn_project && | 
|  | confirm_props "." "foo" "svn:keywords" "FreeBSD=%H" && | 
|  | rm -rf svn_project | 
|  | ' | 
|  |  | 
|  | test_expect_success 'add multiple props' ' | 
|  | set_props "." "foo" \ | 
|  | "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes && | 
|  | git svn dcommit && | 
|  | svn_cmd co "$svnrepo" svn_project && | 
|  | confirm_props "." "foo" \ | 
|  | "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes && | 
|  | rm -rf svn_project | 
|  | ' | 
|  |  | 
|  | test_expect_success 'add props subdir' ' | 
|  | set_props "." "$foo_subdir2" svn:keywords "FreeBSD=%H" && | 
|  | git svn dcommit && | 
|  | svn_cmd co "$svnrepo" svn_project && | 
|  | confirm_props "." "$foo_subdir2" "svn:keywords" "FreeBSD=%H" && | 
|  | rm -rf svn_project | 
|  | ' | 
|  |  | 
|  | test_expect_success 'add props relative' ' | 
|  | set_props "subdir/subdir2" "../foo_subdir" \ | 
|  | svn:keywords "FreeBSD=%H" && | 
|  | git svn dcommit && | 
|  | svn_cmd co "$svnrepo" svn_project && | 
|  | confirm_props "subdir/subdir2" "../foo_subdir" \ | 
|  | svn:keywords "FreeBSD=%H" && | 
|  | rm -rf svn_project | 
|  | ' | 
|  | test_done |