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

Re: [PATCH] no mergeinfo on 'mergeinfo NON-affecting' wc-to-wc copy

From: Vlad Georgescu <vgeorgescu_at_gmail.com>
Date: Wed, 10 Sep 2008 17:35:08 +0300

On Wed, Sep 10, 2008 at 5:27 PM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
> Vlad Georgescu wrote:
>> Hi,
>> 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.

We don't need to know exactly which path the destination or the source
inherit from. If neither inherits from a path in the WC, it means that
a) there's really no inheritable mergeinfo at all, so we shouldn't set
empty mergeinfo
b) there's mergeinfo in a path above the wc root, but in this case
both the source and the destination inherit it, so there's no need to
set empty mergeinfo.

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:35:19 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.