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

Mergeinfo and added paths

From: Paul Burba <pburba_at_collab.net>
Date: Tue, 8 Jan 2008 10:46:10 -0800

Hi All,

Something occurred to me while working on some of our outstanding MT
issues this week that troubles me a bit. We (thanks to cmpilato's merge
source normalization code) go to significant effort to keep mergeinfo
normalized. For example, if path 'branch1/A/D/G/rho' has mergeinfo of

trunk/A/D/G/rho:4-7
branch2/A/D/G/rho:12

then 'trunk/A/D/G/rho' and 'branch2/A/D/G/rho' both better well exist at
r3-7 and r12 respectively.

But when a merge adds subtrees we can end up with paths that either
inherit mergeinfo or have explicit mergeinfo with paths that don't
exist. Consider a standard greek tree with the following changes:

r2 - Copy 'A' to 'A_COPY'
r3 - Text mod to 'A/D/H/psi'
r4 - Text mod to 'A/D/G/rho'
r5 - Text mod to 'A/B/E/beta'
r6 - Text mod to 'A/D/H/omega'
r7 - Add file 'A/D/H/nu'
r8 - Text mode to file 'A/D/H/nu'

Now merge a range to 'A_COPY' that starts before 'nu' was added:

>svn merge %url77%/A merge_tests-77\A_COPY -r2:8
--- Merging r3 through r8 into 'merge_tests-77\A_COPY':
U merge_tests-77\A_COPY\B\E\beta
U merge_tests-77\A_COPY\D\G\rho
A merge_tests-77\A_COPY\D\H\nu
U merge_tests-77\A_COPY\D\H\omega
U merge_tests-77\A_COPY\D\H\psi

We get the mergeinfo on A_COPY we expect. But now 'nu' is effectively
inheriting '/A/D/H/nu:3-8', even though 'A/D/H/nu' doesn't even exist
until r7.

>svn pl -vR merge_tests-77
Properties on 'merge_tests-77\A_COPY':
  svn:mergeinfo : /A:3-8

Now do a reverse merge targeted on 'A_COPY/D/H/nu'

>svn merge %url77%/A/D/H/nu merge_tests-77\A_COPY\D\H\nu -c-8
--- Reverse-merging r8 into 'merge_tests-77\A_COPY\D\H\nu':
U merge_tests-77\A_COPY\D\H\nu

Now we get explicit mergeinfo on 'nu' that is again "misleading".

>svn pl -vR merge_tests-77
Properties on 'merge_tests-77\A_COPY':
  svn:mergeinfo : /A:3-8
Properties on 'merge_tests-77\A_COPY\D\H\nu':
  svn:mergeinfo : /A/D/H/nu:3-7 <-- nu doesn't exist at r3-6

Now to be clear, I haven't found any problems caused by this behavior
(though http://subversion.tigris.org/issues/show_bug.cgi?id=3067 is
tangentially related). I only wonder if this might cause us problems in
some scenarios on trunk or in the various 1.5 targeted branches we are
working on? Anyone thought about this particular issue much?

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-01-08 19:46:22 CET

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