[PATCH 3/4] git-svn: svn (command-line) 1.0.x compatibility

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]