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

Re: SVN 1.5.1 creates svn:mergeinfo properties with svn-1.4 repo

From: Michael Reinelt <michael_at_reinelt.co.at>
Date: Wed, 13 Aug 2008 06:10:07 +0200

Hi Paul,

>> my subversion client creates the property when merging, and even when
>> doing a "svn copy".
> A 1.5 client should not *create* mergeinfo when merging from a pre 1.5
> server, it may however propagate existing mergeinfo from the merge
> source. For example, say you merged -r17 from 'trunk' to 'branch'.
> If r17 added mergeinfo on trunk, then this mergeinfo would be added to
> branch via the merge (just like any other property).
> That said, you should definitely *not* see mergeinfo created on branch
> that describes r17 from trunk. If you are seeing anything like that
> (i.e. a merge of -rX creates mergeinfo on the target for rX)then that
> is definitely a bug and not something that was intended for 1.5.
> So if mergeinfo can't get created by a merge, how can it get into a
> 1.4 repository? Exactly as you pointed out, via svn copy,
> specifically as WC to WC copy.

> It looks like mergeinfo is being introduced into your repository via
> WC to WC copies. Subversion (by convention) isn't allowed to contact
> the server during WC to WC copies and thus doesn't know if the copy
> destination would inherit* mergeinfo from some parent path that is not
> present in the working copy (since the WC may not represent the
> complete repository). This means that svn copy creates empty
> mergeinfo (i.e. svn:mergeinfo with a "" value) on the copy destination
> to prevent it from inheriting any mergeinfo.

Well, this is a very good analysis! It explains exactly what I see here:
sometimes I get a mergeinfo property set after doing a regular merge,
because this property has been set by a earlier WC->WC copy. And I see
the mergeinfo prop set after a WC->WC copy.

>> How can I prevent svn from using the mergeinfo property?
> In the long run the developer community needs to some or all of the following:
> A) Make WC to WC copies not always produce mergeinfo.
> B) Make commit smarter - don't commit svn:mergeinfo to pre 1.5
> repositories ever (seriously, does anyone ever need this?)
> C) Make commit even smarter - If a WC to WC copy produced empty
> mergeinfo, check if the copy destination would inherit any mergeinfo
> (if no explicit mergeinfo existed on it). If not, then the empty
> mergeinfo is not necessary and can be reverted.

I'd add another point D) change 'svn diff' (especially --summarize) to
ignore changes to the mergeinfo property. I think svn:mergeinfo should
be handled as kind of a 'internal property' which cannot be easily
changed by the user like other properties. (at the moment you can merge
changes to the mergeinfo property, which doesn't make too much sense to me)

> None of that helps you immediately though, so I would try the following:
> If possible, use a REPOS to WC copy instead of a WC to WC copy. This
> will not automatically create any empty mergeinfo on the copy
> destination. Unfortunately if the working copy source has explicit or
> inherited mergeinfo or the copy destination would inherit mergeinfo,
> then mergeinfo will be present. In that case you can...
> ...Just delete the mergeinfo created by WC to WC copies before
> committing them. This is crude but effective.

Thanks for the hint! I'll try this, but from what I remember there's a
small problem: after merging files that already have the mergeinfo
property, I see changes to the property before committing (svn stat
reports 'MM', the second M tells me that something has changed to a
property, svn diff shows me the mergeinfo property, I can 'svn propdel'
it before committing.

But after doing a WC->WC copy, svn stat reports 'A' only (no changes to
properties), the mergeinfo property does not yet exist, so I cannot
propdel it, it's here *after* committing. So I have to propdel mergeinfo
and commit again. even more crude, but it works :-)

Thanks a lot, Michael

Michael Reinelt <michael_at_reinelt.co.at>
GPG-Key 0xDF13BA50
ICQ #288386781
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-08-13 06:10:59 CEST

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

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