On Jun 19, 2012, at 22:12 , s...@apache.org wrote: > Author: stsp > Date: Tue Jun 19 20:12:34 2012 > New Revision: 1351834 > > URL: http://svn.apache.org/viewvc?rev=1351834&view=rev > Log: > Fix a crash in JavaHL due to my recent changes for delayed invocation of > the interactive conflict resolution callback. > > Conflict descriptions read back from conflict storage lack some information > previously passed to the callback during a running update/merge process. > JavaHL's tigris.org backwards compat code unconditionally dereferenced > pointers to the left/mine versions contained in conflict descriptions, > which are no longer provided because of my changes :( > Let's hope we can fix this properly in the short term by persisting more > information about conflicts in the conflict store (hi Bert!) and then reading > it back from there.
I think the problem isn't persisting the information per se, it's whacking all of the moles^W edge cases. In the function subversion/libsvn_wc/update_editor.c:create_tree_conflict() there's a conflict for which a version field is NULL: [[[ if (left_repos_relpath == NULL) /* A locally added or unversioned path in conflict with an incoming add. * Send an 'empty' left revision. */ src_left_version = NULL; else ]]] This function was written a couple of years ago and hasn't changed much since. If we want a left_revision in all cases, we should revisit it and its counterpart in the merge code. For reference, here's the original commit of most of the code in create_tree_conflict(): http://svn.apache.org/viewvc?view=revision&revision=911661 and here's the todo-comment mentioned there: [[[ /* ###TODO: It would be nice to tell the user at which URL and * ### revision source-left was empty, which could be quite difficult * ### to code, and is a slight theoretical leap of the svn mind. * ### Update should show * ### URL: svn_wc__db_scan_addition( &repos_relpath ) * ### REV: The base revision of the parent of before this update * ### started * ### ### BUT what if parent was updated/switched away with * ### ### depth=empty after this node was added? * ### Switch should show * ### URL: scan_addition URL of before this switch started * ### REV: same as above */ ]]] See notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt for more details. Steve -- Stephen Butler elego Software Solutions GmbH http://www.elego.de