#!/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