On Wed, Sep 10, 2008 at 10:27 AM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>> 2008/9/10 Danil Shopyrin <danil_at_visualsvn.com>:
>>> Hi!
>>>
>>> Here is the patch that is trying to fix on of the problem discussed at
>>> http://svn.haxx.se/dev/archive-2008-08/0793.shtml
>>> [[
>>> 2) Mergeinfo produced during WC-to-WC copy differs from equivalent
>>> REPO-to-REPO copy. If you copy file in working copy and there is no
>>> mergeinfo in the working copy then the new file will get an empty
>>> mergeinfo record. Similar REPO-to-REPO copy operation doesn't produce
>>> empty mergeinfo record.
>>> ]]
>>>
>>> The general idea of the patch is as follows: we don't produce any
>>> mergeinfo record if we [definitely] know that it's unnecessary. The
>>> patch should ease the pain in the most cases. For example, it's not
>>> needed to worry about mergeinfo in the cases when:
>>> a. copy is performed within a working copy (it's just a 'local file
>>> rename because of refactoring')
>>> b. there is no merges except ones on the trunk/branches level (or
>>> there is no merges at all)
>>>
>>
>> The patch looks correct, but I think it's more complicated than it
>> needs to be. I'd rather not put the extra checks in a different
>> function, and I don't think you need to extend
>> svn_client__get_wc_mergeinfo().
>>
>> In propagate_mergeinfo_within_wc(), we need to do the following:
>>
>> 1. Get the mergeinfo for the source. If it's explicit, not inherited,
>> we're done, there's nothing to propagate, because the destination
>> already has the same explicit mergeinfo as the source, as a result of
>> the copy. Currently, propagate_mergeinfo_within_wc() calls
>> calculate_target_mergeinfo(), we can replace this with a call to
>> svn_client__get_wc_mergeinfo().
>> 2. Figure out which path the destination inherits mergeinfo from, if any.
>
> ...making sure to honor the wc-to-wc copy's promise not to talk to the
> repository. If, in this scenario, you don't find any inheritable
> mergeinfo in a working copy parent, you must not assume that *no*
> parent has mergeinfo (since maybe you only checked out /trunk/project
> but it's /trunk that carries the mergeinfo). Unless you can otherwise
> determine that's safe not to do so in this case, you must continue to
> set the empty mergeinfo property on the copy destination.
Is it possible to do the logic at commit time and discard the property
if it is not needed?
--
Thanks
Mark Phippard
http://markphip.blogspot.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-10 16:32:36 CEST