git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
EWEric Wong <normalperson@yhbt.net>
Date
Jun 16, 2006, 17:57 UTC
Message-ID
<11504806492195-git-send-email-normalperson@yhbt.net>
In-Reply-To
<11504806481800-git-send-email-normalperson@yhbt.net>

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@yhbt.net>
---
 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
Previous: Eric WongNext: Eric Wong
Message 7 of 8 in “git-svn: avoid creating some small files”
  1. 1/3 git-svn: avoid creating some small filesEric Wong, Jun 15, 2006
  2. 2/3 git-svn: fix several small bugs, enable branch optimizationEric Wong, Jun 15, 2006
  3. 3/3 git-svn: Eliminate temp file usage in libsvn_get_file()Eric Wong, Jun 15, 2006
  4. 0/4 git-svn: more improvementsEric Wong, Jun 16, 2006
  5. 1/4 git-svn: bugfix and optimize the 'log' commandEric Wong, Jun 16, 2006
  6. 2/4 git-svn: tests no longer fail if LC_ALL is not a UTF-8 localeEric Wong, Jun 16, 2006
  7. 3/4 git-svn: svn (command-line) 1.0.x compatibilityEric Wong, Jun 16, 2006
  8. 4/4 git-svn: rebuild convenience and bugfixesEric Wong, Jun 16, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.