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

Re: Tree conflicts - problem handling when local directory is deleted

From: Mark Phippard <mphippard_at_collab.net>
Date: Thu, 22 Jan 2009 09:54:46 -0500

On Wed, Jan 21, 2009 at 3:22 PM, Mark Phippard <markphip_at_gmail.com> wrote:
> We've run into a problem when testing tree conflicts. We have a
> locally renamed folder. We do an update which wants to pull in an
> update to a file in the folder. This creates a tree conflict. We
> resolve the conflict but cannot commit the change because the folder
> to be deleted is out of date. I'd guess the tree conflict prevented
> the normal updating of the directory revision in the WC.
>
> I also build and tried the script using the issue-3334-dirs branch and
> get the same results
>
> $ ./script.sh
> ### Making a Greek Tree for import...
> ### Done.
>
> ### Importing it...
> ### Done.
>
> ### In wc1, edit and commit A/B/E/alpha ...
> Sending wc1/A/B/E/alpha
> Transmitting file data .
> Committed revision 2.
> ### Done.
>
> ### In wc2, rename A/B/E to A/B/E1 ...
> A wc2/A/B/E1
> D wc2/A/B/E/alpha
> D wc2/A/B/E/beta
> D wc2/A/B/E
> ### update wc2, creating tree conflict ...
> C wc2/A/B/E
> At revision 2.
> Summary of conflicts:
> Tree conflicts: 1
> D C wc2/A/B/E
> > local delete, incoming edit upon update
> D wc2/A/B/E/alpha
> D wc2/A/B/E/beta
> A + wc2/A/B/E1
> ### In wc2, merge change from r2 to renamed file ...
> --- Merging r2 into 'wc2/A/B/E1':
> U wc2/A/B/E1/alpha
> ### In wc2, mark conflict resolved ...
> Resolved conflicted state of 'wc2/A/B/E'
> D wc2/A/B/E
> D wc2/A/B/E/alpha
> D wc2/A/B/E/beta
> A + wc2/A/B/E1
> M + wc2/A/B/E1/alpha
> ### In wc2, commit rename
> Deleting wc2/A/B/E
> subversion/libsvn_client/commit.c:859: (apr_err=160028)
> svn: Commit failed (details follow):
> subversion/libsvn_repos/commit.c:124: (apr_err=160028)
> svn: Directory '/trunk/A/B/E' is out of date

Just for the heck of it, I ran the script using 1.5.5. Overall it is
handled better than trunk, although it obviously does not alert the
user to the tree conflict situation. That said, at least if the user
knew about the problem, 1.5.5 offers a way to handle it. With current
trunk, you cannot get your WC into a state that will allow a commit.
Here are results with 1.5.5:

$ ./script.sh
### Making a Greek Tree for import...
### Done.

### Importing it...
### Done.

### In wc1, edit and commit A/B/E/alpha ...
Sending wc1/A/B/E/alpha
Transmitting file data .
Committed revision 2.
### Done.

### In wc2, rename A/B/E to A/B/E1 ...
A wc2/A/B/E1
D wc2/A/B/E/alpha
D wc2/A/B/E/beta
D wc2/A/B/E
### update wc2, creating tree conflict ...
U wc2/A/B/E/alpha
Updated to revision 2.
D wc2/A/B/E
D wc2/A/B/E/alpha
D wc2/A/B/E/beta
A + wc2/A/B/E1
### In wc2, merge change from r2 to renamed file ...
--- Merging r2 into 'wc2/A/B/E1':
U wc2/A/B/E1/alpha
### In wc2, mark conflict resolved ...
D wc2/A/B/E
D wc2/A/B/E/alpha
D wc2/A/B/E/beta
A + wc2/A/B/E1
M + wc2/A/B/E1/alpha
### In wc2, commit rename
Deleting wc2/A/B/E
Adding wc2/A/B/E1
Sending wc2/A/B/E1/alpha
Transmitting file data .
Committed revision 3.

-- 
Thanks
Mark Phippard
http://markphip.blogspot.com/
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1043224
Received on 2009-01-22 15:55:07 CET

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