Tested on a plain Ubuntu Warty installation using subversion 1.0.6-1.2ubuntu3 svn add --force was never needed, as it only affected directories, which git (thankfully) doesn't track The 1.0.x also didn't support symlinks(!), so allow NO_SYMLINK to be defined for running tests Signed-off-by: Eric Wong <normalperson@xxxxxxxx> --- contrib/git-svn/git-svn.perl | 4 + contrib/git-svn/t/t0000-contrib-git-svn.sh | 90 +++++++++++++++------------- 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl index 417fcf1..ab1d065 100755 --- a/contrib/git-svn/git-svn.perl +++ b/contrib/git-svn/git-svn.perl @@ -1306,12 +1306,12 @@ sub svn_checkout_tree { } elsif ($m->{chg} eq 'T') { sys(qw(svn rm --force),$m->{file_b}); apply_mod_line_blob($m); - sys(qw(svn add --force), $m->{file_b}); + sys(qw(svn add), $m->{file_b}); svn_check_prop_executable($m); } elsif ($m->{chg} eq 'A') { svn_ensure_parent_path( $m->{file_b} ); apply_mod_line_blob($m); - sys(qw(svn add --force), $m->{file_b}); + sys(qw(svn add), $m->{file_b}); svn_check_prop_executable($m); } else { croak "Invalid chg: $m->{chg}\n"; diff --git a/contrib/git-svn/t/t0000-contrib-git-svn.sh b/contrib/git-svn/t/t0000-contrib-git-svn.sh index 0f52746..443d518 100644 --- a/contrib/git-svn/t/t0000-contrib-git-svn.sh +++ b/contrib/git-svn/t/t0000-contrib-git-svn.sh @@ -11,7 +11,10 @@ mkdir import cd import echo foo > foo -ln -s foo foo.link +if test -z "$NO_SYMLINK" +then + ln -s foo foo.link +fi mkdir -p dir/a/b/c/d/e echo 'deep dir' > dir/a/b/c/d/e/file mkdir -p bar @@ -129,46 +132,45 @@ test_expect_success "$name" \ -name='executable file becomes a symlink to bar/zzz (file)' -rm exec.sh -ln -s bar/zzz exec.sh -git update-index exec.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - svn up $SVN_TREE && - test -L $SVN_TREE/exec.sh" - - - -name='new symlink is added to a file that was also just made executable' -chmod +x bar/zzz -ln -s bar/zzz exec-2.sh -git update-index --add bar/zzz exec-2.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - svn up $SVN_TREE && - test -x $SVN_TREE/bar/zzz && - test -L $SVN_TREE/exec-2.sh" - - - -name='modify a symlink to become a file' -git help > help || true -rm exec-2.sh -cp help exec-2.sh -git update-index exec-2.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - svn up $SVN_TREE && - test -f $SVN_TREE/exec-2.sh && - test ! -L $SVN_TREE/exec-2.sh && - diff -u help $SVN_TREE/exec-2.sh" +if test -z "$NO_SYMLINK" +then + name='executable file becomes a symlink to bar/zzz (file)' + rm exec.sh + ln -s bar/zzz exec.sh + git update-index exec.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -L $SVN_TREE/exec.sh" + + name='new symlink is added to a file that was also just made executable' + chmod +x bar/zzz + ln -s bar/zzz exec-2.sh + git update-index --add bar/zzz exec-2.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -x $SVN_TREE/bar/zzz && + test -L $SVN_TREE/exec-2.sh" + + name='modify a symlink to become a file' + git help > help || true + rm exec-2.sh + cp help exec-2.sh + git update-index exec-2.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -f $SVN_TREE/exec-2.sh && + test ! -L $SVN_TREE/exec-2.sh && + diff -u help $SVN_TREE/exec-2.sh" +fi if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$' @@ -193,6 +195,12 @@ test_expect_success "$name" \ git-rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b && diff -u a b" +if test -n "$NO_SYMLINK" +then + test_done + exit 0 +fi + name='check imported tree checksums expected tree checksums' rm -f expected if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$' -- 1.4.0 - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html