[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[1.7.x] "svn update" tripping assertion when replacing executable by symlink (Re: [bug?] perl bindings: SVN::Ra->new trips assertion when file:// URL contains a space)

From: Jonathan Nieder <jrnieder_at_gmail.com>
Date: Sun, 1 Jan 2012 16:31:14 -0600

Stefan Sperling wrote:
> On Sat, Dec 17, 2011 at 03:40:03AM -0600, Jonathan Nieder wrote:

>> svn: E235000: In file '/home/jrn/src/subversion/subversion/libsvn_wc/update_editor.c' line 1582: assertion failed (action == svn_wc_conflict_action_edit || action == svn_wc_conflict_action_delete || action == svn_wc_conflict_action_replace)
>> Aborted (core dumped)
> That looks like the symlink update bug fixed in 1.7.2
> Version 1.7.2
> (02 Dec 2011, from /branches/1.7.x)
> http://svn.apache.org/repos/asf/subversion/tags/1.7.2
> [...]
> * fix an assertion failure when a symlink is updated (r1186944, -81, -83)

That sounds right. Unfortunately, I can reproduce it with

Some details:

The action is _add. The test script ran "svn update" after a
typechange (executable -> symlink) for a file named exec.sh. reason
is _replaced. The base status is _normal.

"svn log -v" reveals that /exec.sh is already present and already
known to be a symlink. However, the working copy is not up-to-date
--- the working copy of the file is still an executable.

Call chain:

    main -> svn_client_update4 -> svn_client__update_internal -> update_internal ->
     svn_wc_crawl_revisions -> svn_repos_finish_report -> finish_report ->
     reporter.c::drive -> delta_dirs -> update_entry ->
     update_editor.c::close_file -> check_tree_conflict

More precisely, this is the "local_is_link != incoming_is_link" case
in close_file().

In trunk after r1187692, it's gone. Instead of calling
check_tree_conflict(), that code path calls create_tree_conflict(),
avoiding trouble.

Thanks and hope that helps,
Received on 2012-01-01 23:31:58 CET

This is an archived mail posted to the Subversion Dev mailing list.