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

Re: Resoving tree conflicts results in inconsistent state between two working copies of same branch

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Tue, 23 Aug 2011 09:07:29 +0200

On Tue, Aug 23, 2011 at 5:13 AM, Neels J Hofmeyr <neels_at_elego.de> wrote:
> I can reproduce the corrupted WC reported by David Wallace with 1.6.17.
> 1.7.x does not show this bug.
>
> I have attached a reproduction script that is roughly based on David's
> typescript, but is only a fraction of the size.
>
> The error occurs like this:
>
> - use Subversion release 1.6.17
> - update WC
> - locally delete file 'foo'
> - commit
> - do *not* update.
> - merge, so that file 'foo' is added (e.g. from another branch).
>  status becomes: A    +  foo
> - update
> - A tree conflict "local edit, incoming delete" is flagged.

At this point, this seems remotely similar to
http://subversion.tigris.org/issues/show_bug.cgi?id=3526 "Commit of
newly added file followed by move (or delete) of parent dir causes
tree conflict". Except that it's more like "Commit of deleted file
followed by a merge adding the same file to the parent dir causes tree
conflict". BTW: Does it have to be a merge adding the same file (A+),
or can it also happen with a plain 'add' of that same file (A)?

In issue #3526 the conflict came from one of the 'entry-props' being
updated (the last-changed-revision number), while it was locally
deleted. I don't understand the internals too much here, but on the
surface it looks like a conflict between a local entry-prop being
updated (the copyfrom perhaps?), and the remote delete coming in. Or
something like that :-).

Anyway, it's just a vague similarity, maybe they have nothing to do
with each other, so I could just as well be saying nonsense here :-).

> This is obviously wrong. The local 'foo' has been deleted (and committed).
> Taking this situation further results in a truly corrupted WC:
>
> - resolve the tree conflict
> - commit
>
> The committed result (svn cat <URL>) is different from the on-disk contents,
> even though the file is claimed to be up-to-date.

That's certainly a new result, one which I hadn't reached with #3526.
Nice! (well, not nice of course, but ... interesting :-)).

> Trunk doesn't show this behavior (thumbs up for wc-ng), but we should try to
> find a fix for 1.6.x.
>
> stsp, you wanna hunt this down?
>
> Thank you very much, Dave! Seriously bad mojo, as you said. Good work!!
> ...even though it took ages to deflate your darn typescript ;)
>
> ~Neels
>

-- 
Johan
Received on 2011-08-23 09:08:38 CEST

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