Subversion represents symlinks as ordinary files with content starting with "link " and the svn:special property set to "*". Thus a file can switch between being a symlink and a non-symlink simply by toggling its svn:special property, and new checkouts will automatically write a file of the appropriate type. Likewise, in subversion 1.6 and older, running "svn update" would notice changes in filetype and update the working copy appropriately. Unfortunately, starting in subversion 1.7 ,changes to the svn:special property trip an assertion instead: $ svn up svn-tree Updating 'svn-tree': svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' \ line 1583: assertion failed (action == svn_wc_conflict_action_edit \ || action == svn_wc_conflict_action_delete || action == \ svn_wc_conflict_action_replace) This is a known bug in "svn update" (Subversion issue 4091) and for the sake of old repositories it will need to be fixed some day. Revisions prepared with ordinary svn commands ("svn add" and not "svn propset") don't trip this because they represent filetype changes using a replace operation, which is approximately equivalent to removal followed by adding a new file and works fine. Perhaps "git svn" should mimic that, but for now let's teach the test suite to recover from the bug by testing the content of HEAD with a new checkout. After this change, tests t9100.11-13 pass again. Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- Hi Eric, Michael G. Schwern wrote: > At this point SVN 1.7 passes except for 3 tests in > t9100-git-svn-basic.sh that look like an SVN bug to do with > symlinks. How about this patch? I didn't add a new xfail test for "svn up" working because I'm not yet sure what good git-svn behavior would be. Probably it would be better to track down that svn bug and get a fix backported to the 1.7.x branch. Reference: http://subversion.tigris.org/issues/show_bug.cgi?id=4160 t/t9100-git-svn-basic.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh index 749b75e8..34d3485f 100755 --- a/t/t9100-git-svn-basic.sh +++ b/t/t9100-git-svn-basic.sh @@ -19,6 +19,15 @@ case "$GIT_SVN_LC_ALL" in ;; esac +svn_up_avoiding_issue4091 () { + if ! svn_cmd_up "$SVN_TREE" + then + # work around Subversion issue 4091 + rm -r "$SVN_TREE" && + svn_cmd checkout "$svnrepo" "$SVN_TREE" + fi +} + test_expect_success \ 'initialize git svn' ' mkdir import && @@ -148,7 +157,7 @@ test_expect_success "$name" ' git commit -m "$name" && git svn set-tree --find-copies-harder --rmdir \ ${remotes_git_svn}..mybranch5 && - svn_cmd up "$SVN_TREE" && + svn_up_avoiding_issue4091 && test -h "$SVN_TREE"/exec.sh' name='new symlink is added to a file that was also just made executable' @@ -173,7 +182,7 @@ test_expect_success "$name" ' git commit -m "$name" && git svn set-tree --find-copies-harder --rmdir \ ${remotes_git_svn}..mybranch5 && - svn_cmd up "$SVN_TREE" && + svn_up_avoiding_issue4091 && test -f "$SVN_TREE"/exec-2.sh && test ! -h "$SVN_TREE"/exec-2.sh && test_cmp help "$SVN_TREE"/exec-2.sh' -- 1.7.10.4 -- To unsubscribe from this list: 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