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
branches/1.7.x@1226297.

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,
Jonathan

Reply via email to