git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Eric Wong <normalperson@yhbt.net>
Cc: "Michael G. Schwern" <schwern@pobox.com>,
	git@vger.kernel.org, gitster@pobox.com, robbat2@gentoo.org,
	bwalton@artsci.utoronto.ca
Subject: [PATCH/RFC] test: work around SVN 1.7 mishandling of svn:special changes
Date: Sat, 6 Oct 2012 12:24:56 -0700	[thread overview]
Message-ID: <20121006192455.GA14969@elie.Belkin> (raw)
In-Reply-To: <1343468872-72133-8-git-send-email-schwern@pobox.com>

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@gmail.com>
---
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

  reply	other threads:[~2012-10-06 19:25 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-28  9:47 Fix git-svn for SVN 1.7 Michael G. Schwern
2012-07-28  9:47 ` [PATCH 1/8] SVN 1.7 will truncate "not-a%40{0}" to just "not-a" Michael G. Schwern
2012-07-28 14:16   ` Jonathan Nieder
2012-07-28 19:32     ` Michael G Schwern
2012-10-09  8:41       ` [PATCH/RFC] svn test: escape peg revision separator using empty peg rev Jonathan Nieder
2012-10-09  9:47         ` Michael J Gruber
2012-10-09 10:19           ` Jonathan Nieder
2012-10-10 20:37             ` Eric Wong
2012-10-10 21:02               ` Jonathan Nieder
2012-10-10 21:31                 ` Eric Wong
2012-10-10 21:42                   ` Jonathan Nieder
2012-10-10 22:16                     ` Eric Wong
2012-10-10 22:33               ` Junio C Hamano
2012-07-28  9:47 ` [PATCH 2/8] Fix typo in test Michael G. Schwern
2012-07-28  9:47 ` [PATCH 3/8] Improve our URL canonicalization to be more like SVN 1.7's Michael G. Schwern
2012-07-28  9:47 ` [PATCH 4/8] Replace hand rolled URL escapes with canonicalization Michael G. Schwern
2012-07-28  9:47 ` [PATCH 5/8] Canonicalize earlier in a couple spots Michael G. Schwern
2012-07-28  9:47 ` [PATCH 6/8] Add function to append a path to a URL Michael G. Schwern
2012-07-28  9:47 ` [PATCH 7/8] Turn on canonicalization on newly minted URLs Michael G. Schwern
2012-10-06 19:24   ` Jonathan Nieder [this message]
2012-10-09 10:12     ` [PATCH/RFC v2] git svn: work around SVN 1.7 mishandling of svn:special changes Jonathan Nieder
2012-10-10 20:11       ` Eric Wong
2012-10-10 20:47         ` [PATCH v3] " Jonathan Nieder
2012-07-28  9:47 ` [PATCH 8/8] Remove some ad hoc canonicalizations Michael G. Schwern
2012-07-30 20:38 ` Fix git-svn for SVN 1.7 Eric Wong
2012-07-30 21:10   ` Michael G Schwern
2012-07-30 22:15     ` Eric Wong
2012-07-31  1:04       ` Michael G Schwern
2012-07-31  2:18         ` Eric Wong
2012-07-31  4:30           ` Michael G Schwern
2012-07-31  6:53   ` Junio C Hamano
2012-07-31  9:54     ` Michael G Schwern
2012-07-31 20:01       ` Eric Wong
2012-07-31 23:05         ` Junio C Hamano
2012-07-31 23:28           ` Michael G Schwern
2012-07-31 23:24         ` Michael G Schwern
2012-08-01 21:30           ` Eric Wong
2012-08-02 10:31 ` Eric Wong
2012-08-02 16:07   ` Jonathan Nieder
2012-08-02 18:58     ` Junio C Hamano
2012-08-02 19:50       ` Robin H. Johnson
2012-08-02 22:10         ` Eric Wong
2012-08-21  4:04       ` Junio C Hamano
2012-08-21 21:03         ` Eric Wong
2012-08-21 21:34           ` Junio C Hamano
2012-08-02 20:51     ` Eric Wong
2012-08-02 21:22       ` Junio C Hamano
2012-08-02 21:42         ` Eric Wong
2012-08-02 21:55           ` Eric Wong
2012-08-02 22:05             ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121006192455.GA14969@elie.Belkin \
    --to=jrnieder@gmail.com \
    --cc=bwalton@artsci.utoronto.ca \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=normalperson@yhbt.net \
    --cc=robbat2@gentoo.org \
    --cc=schwern@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).