On Wed, Apr 14, 2010 at 4:49 PM, Paul Burba <ptburba_at_gmail.com> wrote:
> On Wed, Apr 14, 2010 at 3:49 PM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>> C. Michael Pilato wrote:
>>> Paul Burba wrote:
>>>> On Wed, Apr 14, 2010 at 2:34 PM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>>>>> Paul Burba wrote:
>>>>>> In a perfect world maybe we'd give a error along the lines of 'hey,
>>>>>> you are trying to reintegrate into a shallow WC and some of the paths
>>>>>> affected by the merge aren't present, you are going to get tree
>>>>>> conflicts, is this really what you want? :-)'
>>>>>>
>>>>>> But going this route adds more merge special casing and obviously has
>>>>>> a performance penalty, two things we definitely don't need more of.
>>>>> Can we give this feedback at the time of the conflict rather than up front?
>>>>> Â That is, can we avoid the performance penalty of an upfront merge forecast
>>>>> but still tell folks, when they get those tree conflicts, "Hey, you could
>>>>> avoid this kind of conflict by simply not having directory FOO missing by
>>>>> sparse configuration; go flesh that sucker out and retry this reintegration."
>>>> Mike,
>>>>
>>>> Do you mean to let the merge complete and give the warning at the
>>>> *end* rather than stopping the merge on the first tree conflict due to
>>>> a missing subtree-caused-by-a-shallow-WC? Â After all, the user might
>>>> not care about some tree conflicts and want the merge to complete as
>>>> best it can.
>>>
>>> Oh, gosh, no. Â I think my comment is less about your proposed change and
>>> more of a general tree conflict thing. Â I would feel more warm and fuzzy if
>>> I knew that the tree conflict information that we leave around is clear
>>> about the reason for the conflict. Â That a missing-due-to-sparse-checkouts
>>> directory is the reason for the conflict, not just some generic "something
>>> is missing" note. Â That way folks can immediately know, if not by explicit
>>> recommendation stored in the conflict information then at least by
>>> inference, that they could probably avoid the conflict by reverting the
>>> merge, de-shallowing the directories that the merge wished were present, and
>>> then repeating the merge.
>>
>> Had I read your question with my brain fully engaged in the task, I think I
>> would have chosen different words of response. Â I certainly wouldn't have
>> started off with "Oh, gosh, no". Â Sorry, Paul.
>>
>> I think it would be great if there was a way at the end of the merge to say,
>> "Hey, we notice that you had some tree conflicts, all of the variety caused
>> by directories missing-due-to-shallowness. Â Here's a recommended fix, if you
>> care."
>
> Ok, I got you now. Â I agree that would be nice to have. Â In the same
> vein, it would probably be beneficial to flag tree conflicts
> due-to-missing-subtrees-due-to-auth restrictions. Â This is probably
> quite rare, but wow, talk about confusing:
>
> I have an unmodified, single-rev WC:
>
> Â >svn up
> Â At revision 5.
>
> Â >svn st
>
> I merge all available revs:
>
> Â >svn merge ^^/A A_COPY
> Â Â C A_COPY\D\H
> Â --- Recording mergeinfo for merge of r2 through r5 into 'A_COPY':
> Â U Â A_COPY
> Â --- Recording mergeinfo for merge of r2 through r5 into 'A_COPY\D':
> Â U Â A_COPY\D
> Â Summary of conflicts:
> Â Â Tree conflicts: 1
>
> Local delete?
>
> Â >svn st
> Â M Â Â Â A_COPY
> Â M Â Â Â A_COPY\D
> Â ! Â Â C A_COPY\D\H
> Â Â Â Â > Â local delete, incoming edit upon merge
> Â Summary of conflicts:
> Â Â Tree conflicts: 1
>
> Nothing has been deleted on this branch since it was copied!
>
> Â >svn log -v -r1:HEAD A_COPY
> Â ------------------------------------------------------------------------
> Â r1 | jrandom | 2010-04-14 16:23:08 -0400 (Wed, 14 Apr 2010) | 1 line
> Â Changed paths:
> Â Â A /A
> Â Â A /A/B
> Â Â A /A/B/E
> Â Â A /A/B/E/alpha
> Â Â A /A/B/E/beta
> Â Â A /A/B/F
> Â Â A /A/B/lambda
> Â Â A /A/C
> Â Â A /A/D
> Â Â A /A/D/G
> Â Â A /A/D/G/pi
> Â Â A /A/D/G/rho
> Â Â A /A/D/G/tau
> Â Â A /A/D/H
> Â Â A /A/D/H/chi
> Â Â A /A/D/H/omega
> Â Â A /A/D/H/psi
> Â Â A /A/D/gamma
> Â Â A /A/mu
> Â Â A /iota
>
> Â Log message for revision 1.
> Â ------------------------------------------------------------------------
> Â r2 | jrandom | 2010-04-14 16:23:14 -0400 (Wed, 14 Apr 2010) | 1 line
> Â Changed paths:
> Â Â A /A_COPY (from /A:1)
>
> Â log msg
> Â ------------------------------------------------------------------------
> Â r3 | jrandom | 2010-04-14 16:23:16 -0400 (Wed, 14 Apr 2010) | 1 line
> Â Changed paths:
> Â Â M /A_COPY/mu
>
> Good luck guessing that the problem is that you are not authorized to
> a subtree in your target:
>
> Â >type ..\..\repositories\merge_tests-83\conf\authz
> Â [/]
> Â * = rw
> Â [/A_COPY/D/H]
> Â * =
>
> Of course in that case our recommended course of action would be "svn:
> Wow, your authz configuration and/or repository configuration is
> insane! Go throttle the person responsible for it until they change
> it".
>
>> Do we have that kind of data and opportunity available?
>
> From Stefan's reply elsewhere in this thread I gather the answer is
> currently no re the data. Â Re the opportunity, not sure I totally
> understand you there, but at the very end of
> libsvn_client/merge.c:do_directory_merge() would be the place to do
> it.
>
> Paul
Since the whole "post-merge recommended fix" discussion here is really
a separate issue from #3603, I went ahead and committed the patch from
the start of this thread,
http://svn.apache.org/viewvc?view=revision&revision=934454
I also created a new issue to track the "post-merge help" question,
http://subversion.tigris.org/issues/show_bug.cgi?id=3618
Paul
Received on 2010-04-15 17:35:49 CEST