On Wed, 2011-05-04 at 12:42 -0400, Greg Stein wrote:
> On Wed, May 4, 2011 at 12:37, Philip Martin <philip.mar...@wandisco.com> 
> wrote:
> > To make the new single-txn delete pass the regression tests I had to
> > make it leave ACTUAL_NODE rows with tree conflicts.  This preserved the
> > behaviour of the old per-node delete code, but I'm wondering if that is
> > the correct thing to do.  I suspect that the current behaviour is, in
> > part at least, accidental--I think is stems from the time when tree
> > conflicts were stored on the parent node and so deleting a conflicted
> > node would leave the tree conflict unless the parent node was also
> > modified.
> >
> > The current behaviour is that if I have a node in conflict:
> >
> > $ svn st wc
> > R     C wc/A/f
> >      >   local add, incoming add upon update
> > Summary of conflicts:
> >  Tree conflicts: 1
> >
> > and I delete the conflicted node:
> >
> > $ svn rm --force wc/A/f
> > D         wc/A/f
> >
> > it remains in conflict:
> >
> > $ svn st wc
> > D     C wc/A/f
> >      >   local add, incoming add upon update
> > Summary of conflicts:
> >  Tree conflicts: 1
> >
> > I'd like to change this so that delete removes the ACTUAL_NODE row and
> > thus automatically resolves the conflict.
> >
> > Anybody see any problems that would arise?

Yes, I do.  A tree conflict should remain marked until the user declares
it resolved.  The user should be able to review the conflicts that were
raised, make a series of local modifications, review again the conflicts
that were originally raised, and then mark them as resolved when the
user is ready to do so.

> I think the conflict should turn into "local delete, incoming add upon 
> update".

No, it should not change.  Your suggestion would mean "an incoming add
conflicted with the local delete", which is not true.  The "local"
information provided here should not be a duplicate of the node's
current status; it should simply show what local change conflicted with
the incoming change.

> > It also solves one of the orphaned ACTUAL_NODE problems: if the
> > conflicted node is within an added tree then deleting the tree and
> > leaving the ACTUAL_NODE row could result in an ACTUAL_NODE that has no
> > parents.
> 
> That would still be a "local delete, incoming add upon update". Not
> sure whether that would be located at the child, or at the deleted
> ancestor. The update editor has a notion of conflicted parents, and
> this seems to follow that case.

I can't see how the no-parents thing could happen, because there would
be a tree conflict only at the root-most parent that conflicts.

- Julian


Reply via email to