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

Re: svn commit: r1351834 - /subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java

From: Stephen Butler <sbutler_at_elego.de>
Date: Wed, 20 Jun 2012 14:57:59 +0200

On Jun 19, 2012, at 22:12 , stsp_at_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
Received on 2012-06-20 14:58:35 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.