You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Stefan Hett <st...@egosoft.com> on 2016/08/22 15:51:25 UTC
file obstruction upon merging an already merged added/moved file
(#4649)
Hi,
as per stsp's suggestion, sending this to the dev list.
I've reduced a problem we've been having with some merge operations on
our main repository from time to time down to the repro script attached
to this JIRA issue [1] (test_obstruction.bat).
Instead of a successful merge, which I'd expect in this case, I get the
following error instead when doing an svn merge [URL] -cX:
"local file obstruction, incoming file add upon merge"
The test case performs the following steps:
1. create test file and commit
2. modify the file twice and commit each modification separately
3. rename the file and commit
4. merge changes into the branch and commit
5. modify the file on trunk and commit
6. merge the branch back into trunk cherry picking the revision which
was created in step 4
At this point svn merge produces the error mentioned above.
To me this is unexpected, since I would expect the merge to succeed. In
the end all I'm doing is merging back the same file into trunk (even
though in trunk the file was modified).
This looks especially kind of inconsistent to me, since if I do either
of the following merges instead of a cherry picking merge, the merge
succeeds without producing any file conflicts:
- "svn merge [URL]" or
- "svn merge [URL]@X+1"
[1] https://issues.apache.org/jira/browse/SVN-4649
--
Regards,
Stefan Hett
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Stefan Hett <st...@egosoft.com>.
On 9/10/2016 10:35 AM, Julian Foad wrote:
> Julian Foad wrote:
>> On 06/09/16, Stefan Hett wrote:
>>> What still is unclear to me is that SVN handles the case when I do an
>>> auto merge but not when using the cherry pick merge. [...]
>>
>> An auto merge doesn't try to merge back a revision that it can determine
>> has already been applied to the target branch.
>>
>>> Maybe it's best to have a quick look at this at Berlin, if time
>>> permits?
>>
>> Sorry, I can't come to Berlin this year [...]
>
> but I'm sure someone else will be glad to go through it with you.
>
k, I'll see to bring it up with someone there.
--
Regards,
Stefan Hett
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Julian Foad <ju...@foad.me.uk>.
Julian Foad wrote:
> On 06/09/16, Stefan Hett wrote:
>> What still is unclear to me is that SVN handles the case when I do an
>> auto merge but not when using the cherry pick merge. [...]
>
> An auto merge doesn't try to merge back a revision that it can determine
> has already been applied to the target branch.
>
>> Maybe it's best to have a quick look at this at Berlin, if time permits?
>
> Sorry, I can't come to Berlin this year [...]
but I'm sure someone else will be glad to go through it with you.
- Julian
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Julian Foad <ju...@foad.me.uk>.
On 06/09/16, Stefan Hett wrote:
> What still is unclear to me is that SVN handles the case when I do an
> auto merge but not when using the cherry pick merge. [...]
An auto merge doesn't try to merge back a revision that it can determine
has already been applied to the target branch.
> Maybe it's best to have a quick look at this at Berlin, if time permits?
Sorry, I can't come to Berlin this year, and only occasionally check
mail and make a quick reply these days.
- Julian
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Stefan Hett <st...@egosoft.com>.
On 9/5/2016 10:53 PM, Julian Foad wrote:
>
>
> On 05/09/16 10:55, Stefan Hett wrote:
>> On 8/22/2016 5:51 PM, Stefan Hett wrote:
>>> Hi,
>>>
>>> as per stsp's suggestion, sending this to the dev list.
>>>
>>> I've reduced a problem we've been having with some merge operations on
>>> our main repository from time to time down to the repro script
>>> attached to this JIRA issue [1] (test_obstruction.bat).
>>>
>>> Instead of a successful merge, which I'd expect in this case, I get
>>> the following error instead when doing an svn merge [URL] -cX:
>>> "local file obstruction, incoming file add upon merge"
>>>
>>> The test case performs the following steps:
>>> 1. create test file and commit
>>> 2. modify the file twice and commit each modification separately
>>> 3. rename the file and commit
>>> 4. merge changes into the branch and commit
>>> 5. modify the file on trunk and commit
>>> 6. merge the branch back into trunk cherry picking the revision which
>>> was created in step 4
>>>
>>> At this point svn merge produces the error mentioned above.
>>>
>>> To me this is unexpected, since I would expect the merge to succeed.
>>> In the end all I'm doing is merging back the same file into trunk
>>> (even though in trunk the file was modified).
>>> This looks especially kind of inconsistent to me, since if I do either
>>> of the following merges instead of a cherry picking merge, the merge
>>> succeeds without producing any file conflicts:
>>> - "svn merge [URL]" or
>>> - "svn merge [URL]@X+1"
>>>
>>> [1] https://issues.apache.org/jira/browse/SVN-4649
>>>
>> Can anybody confirm that the behavior I see is unexpected and considered
>> a bug? Or is this considered by design?
>
> I haven't looked the details of your script, but when you write "all
> I'm doing is merging back the same file into trunk" this suggests to
> me you may not be thinking about merge the same way Subversion is
> designed to do. It's designed to merge two *changes* -- and you
> suggest the revision you're trying to merge back is "step 4" which is
> a change that includes the *creation* of a file. It is expected that
> if you try to merge one set of changes that create a file with another
> set of changes that also creates that file, then you get a conflict,
> sometimes called an "add versus add" conflict, or apparently here is
> called "obstruction".
>
> I hope that helps.
>
It does. I was actually assuming the same.
What still is unclear to me is that SVN handles the case when I do an
auto merge but not when using the cherry pick merge. Since the cherry
pick merge merges the full range of the path, I would assume a
consistent behavior (aka: either both merges fail due to the incoming
add over existing add problem; or both merges succeed since they
correctly handle that case). The difference in that behavior is what
still confuses me.
Maybe it's best to have a quick look at this at Berlin, if time permits?
For the context: We've set up an auto merge system which merges changes
from a branch back to trunk automatically (based on a flag in the commit
message). That merge is done using a cherry pick merge of a single
revision. The situation above is a case I identified where the auto
merge currently fails.
Hence, I'm now thinking of reconsidering our approach and try a full
merge prior to doing cherry pick merges (and only revert to the cherry
pick merge, if a full merge fails (due to some text/tree conflicts)).
--
Regards,
Stefan Hett
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Julian Foad <ju...@foad.me.uk>.
On 05/09/16 10:55, Stefan Hett wrote:
> On 8/22/2016 5:51 PM, Stefan Hett wrote:
>> Hi,
>>
>> as per stsp's suggestion, sending this to the dev list.
>>
>> I've reduced a problem we've been having with some merge operations on
>> our main repository from time to time down to the repro script
>> attached to this JIRA issue [1] (test_obstruction.bat).
>>
>> Instead of a successful merge, which I'd expect in this case, I get
>> the following error instead when doing an svn merge [URL] -cX:
>> "local file obstruction, incoming file add upon merge"
>>
>> The test case performs the following steps:
>> 1. create test file and commit
>> 2. modify the file twice and commit each modification separately
>> 3. rename the file and commit
>> 4. merge changes into the branch and commit
>> 5. modify the file on trunk and commit
>> 6. merge the branch back into trunk cherry picking the revision which
>> was created in step 4
>>
>> At this point svn merge produces the error mentioned above.
>>
>> To me this is unexpected, since I would expect the merge to succeed.
>> In the end all I'm doing is merging back the same file into trunk
>> (even though in trunk the file was modified).
>> This looks especially kind of inconsistent to me, since if I do either
>> of the following merges instead of a cherry picking merge, the merge
>> succeeds without producing any file conflicts:
>> - "svn merge [URL]" or
>> - "svn merge [URL]@X+1"
>>
>> [1] https://issues.apache.org/jira/browse/SVN-4649
>>
> Can anybody confirm that the behavior I see is unexpected and considered
> a bug? Or is this considered by design?
I haven't looked the details of your script, but when you write "all I'm
doing is merging back the same file into trunk" this suggests to me you
may not be thinking about merge the same way Subversion is designed to
do. It's designed to merge two *changes* -- and you suggest the revision
you're trying to merge back is "step 4" which is a change that includes
the *creation* of a file. It is expected that if you try to merge one
set of changes that create a file with another set of changes that also
creates that file, then you get a conflict, sometimes called an "add
versus add" conflict, or apparently here is called "obstruction".
I hope that helps.
- Julian
Re: file obstruction upon merging an already merged added/moved file
(#4649)
Posted by Stefan Hett <st...@egosoft.com>.
On 8/22/2016 5:51 PM, Stefan Hett wrote:
> Hi,
>
> as per stsp's suggestion, sending this to the dev list.
>
> I've reduced a problem we've been having with some merge operations on
> our main repository from time to time down to the repro script
> attached to this JIRA issue [1] (test_obstruction.bat).
>
> Instead of a successful merge, which I'd expect in this case, I get
> the following error instead when doing an svn merge [URL] -cX:
> "local file obstruction, incoming file add upon merge"
>
> The test case performs the following steps:
> 1. create test file and commit
> 2. modify the file twice and commit each modification separately
> 3. rename the file and commit
> 4. merge changes into the branch and commit
> 5. modify the file on trunk and commit
> 6. merge the branch back into trunk cherry picking the revision which
> was created in step 4
>
> At this point svn merge produces the error mentioned above.
>
> To me this is unexpected, since I would expect the merge to succeed.
> In the end all I'm doing is merging back the same file into trunk
> (even though in trunk the file was modified).
> This looks especially kind of inconsistent to me, since if I do either
> of the following merges instead of a cherry picking merge, the merge
> succeeds without producing any file conflicts:
> - "svn merge [URL]" or
> - "svn merge [URL]@X+1"
>
> [1] https://issues.apache.org/jira/browse/SVN-4649
>
Can anybody confirm that the behavior I see is unexpected and considered
a bug? Or is this considered by design?
--
Regards,
Stefan Hett