Hi, I'm using svn 1.6.6 to merge a single revision from trunk to a branch, and am getting a bunch of seemingly-unneeded mergeinfo. I've read http://blogs.open.collab.net/svn/2009/11/where-did-that-mergeinfo-come-from.html , but as far as I can tell, it doesn't address what I'm seeing.

Trunk has a bit of mergeinfo, which seems related to some renames that were done a while back:

. - /branches/B1:20664-20666
Data\File.zip - /branches/B1/Data/file.zip:20664-20666
Other Data\File.zip - /branches/B1/Other Data/file.zip:20664-20666
Reports\SummaryByPeriod.rpt - /branches/B1/Reports/SummaryByMonth.rpt:20664-20666 Other Reports\TopNSalesSummary.rpt - /branches/B1/Other Reports/TopNCustomersSales.rpt:20664-20666 Reports\TopNSalesSummary.rpt - /branches/B1/Reports/TopNCustomersSales.rpt:20664-20666 Other Reports\SummaryByPeriod.rpt - /branches/B1/Other Reports/SummaryByMonth.rpt:20664-20666

The branch, NewBranch, was recently created, and the mergeinfo looks the same:

. - /branches/B1:20664-20666
Data\File.zip - /branches/B1/Data/file.zip:20664-20666
Other Data\File.zip - /branches/B1/Other Data/file.zip:20664-20666
Reports\SummaryByPeriod.rpt - /branches/B1/Reports/SummaryByMonth.rpt:20664-20666 Other Reports\TopNSalesSummary.rpt - /branches/B1/Other Reports/TopNCustomersSales.rpt:20664-20666 Reports\TopNSalesSummary.rpt - /branches/B1/Reports/TopNCustomersSales.rpt:20664-20666 Other Reports\SummaryByPeriod.rpt - /branches/B1/Other Reports/SummaryByMonth.rpt:20664-20666

Now, I cd into NewBranch's WC and do:

svn merge -c 26096 ^/trunk .

--- Merging r26096 into '.':
U    Installers\Projects\CA\CA.ism

I now have a ton of mergeinfo on files that previously didn't have any.

svn propget svn:mergeinfo -R . [extra line breaks added to hopefully make it easier to read]

Other Data\Stored Procedures - /trunk/Other Data/Stored Procedures:26096*
/branches/B1/Other Data/Stored Procedures:20664-20666

. - /trunk:26096
/branches/B1:20664-20666

Data\Views\v1.sql - /trunk/Data/Views/v1.sql:26096
/branches/B1/Data/Views/v1.sql:20664-20666

Other Data\Views\flatten.bat - /trunk/Other Data/Views/flatten.bat:26096

Other Data\Views\v2.sql - /trunk/Other Data/Views/v2.sql:26096
/branches/B1/Other Data/Views/v2.sql:20664-20666

Other Data\Views\v3.sql - /trunk/Other Data/Views/v3.sql:26096
/branches/B1/Other Data/Views/v3.sql:20664-20666
  [ ... a bunch more in Other Data\Views ... ]

Data\Views\v4.sql - /trunk/Data/Views/v4.sql:26096
/branches/B1/Data/Views/v4.sql:20664-20666
  [ ... a bunch more in Data\Views ... ]

Other Data\Stored Procedures\sp1.sql - /trunk/Other Data/Stored Procedures/sp1.sql:26096
/branches/B1/Other Data/Stored Procedures/sp1.sql:20664-20666
  [ ... a bunch more in Other Data\Stored Procedures ... ]

Data\Stored Procedures\flatten.bat - /trunk/Data/Stored Procedures/flatten.bat:26096
Data/Stored Procedures/sp2.sql:26096
/branches/B1/Other Data/Stored Procedures/sp2.sql:20664-20666
  [ ... a bunch more in Data\Stored Procedures ... ]

Other Data\Stored Procedures\flatten.bat - /trunk/Other Data/Stored Procedures/flatten.bat:26096

Other Data\Views\flattenall.bat - /trunk/Other Data/Views/flattenall.bat:26096

Data\Stored Procedures\flatten_a.sed - /trunk/Data/Stored Procedures/flatten_a.sed:26096

Data\Stored Procedures\flatten_b.sed - /trunk/Data/Stored Procedures/flatten_b.sed:26096

Other Data\Stored Procedures\flatten_a.sed - /trunk/Other Data/Stored Procedures/flatten_a.sed:26096

Other Data\Stored Procedures\flatten_b.sed - /trunk/Other Data/Stored Procedures/flatten_b.sed:26096

Data\Views - /trunk/Data/Views:26096*
/branches/B1/Data/Views:20664-20666

Data\Views\flatten_a.sed - /trunk/Data/Views/flatten_a.sed:26096

Data\Views\flatten_b.sed - /trunk/Data/Views/flatten_b.sed:26096

Other Data\Views - /trunk/Other Data/Views:26096*
/branches/B1/Other Data/Views:20664-20666

Other Data\Views\flatten_a.sed - /trunk/Other Data/Views/flatten_a.sed:26096

Other Data\Views\flatten_b.sed - /trunk/Other Data/Views/flatten_b.sed:26096

Data\Views\flattenall.bat - /trunk/Data/Views/flattenall.bat:26096

Data\Stored Procedures - /trunk/Data/Stored Procedures:26096*
/branches/B1/Data/Stored Procedures:20664-20666

Data\Views\flatten.bat - /trunk/Data/Views/flatten.bat:26096

Data\File.zip - /trunk/Data/File.zip:26096
/branches/B1/Data/file.zip:20664-20666

Other Data\File.zip - /trunk/Other Data/File.zip:26096
/branches/B1/Other Data/file.zip:20664-20666

Other Reports\SummaryByPeriod.rpt - /trunk/Other Reports/SummaryByPeriod.rpt:26096
/branches/B1/Other Reports/SummaryByMonth.rpt:20664-20666

Reports\SummaryByPeriod.rpt - /trunk/Reports/SummaryByPeriod.rpt:26096
/branches/B1/Reports/SummaryByMonth.rpt:20664-20666

Reports\TopNSalesSummary.rpt - /trunk/Reports/TopNSalesSummary.rpt:26096
/branches/B1/Reports/TopNCustomersSales.rpt:20664-20666

Other Reports\TopNSalesSummary.rpt - /trunk/Other Reports/TopNSalesSummary.rpt:26096
/branches/B1/Other Reports/TopNCustomersSales.rpt:20664-20666

It's probably relevant to note that the various flatten* files are externals:

Other Data\Stored Procedures - -r26096 ^/Build%20Scripts/flattensp/flatten.bat flatten.bat
-r26096 ^/Build%20Scripts/flattensp/flatten_a.sed flatten_a.sed
-r26096 ^/Build%20Scripts/flattensp/flatten_b.sed flatten_b.sed

Other Data\Views - -r26096 ^/Build%20Scripts/flattenview/flatten.bat flatten.bat
-r26096 ^/Build%20Scripts/flattenview/flatten_a.sed flatten_a.sed
-r26096 ^/Build%20Scripts/flattenview/flatten_b.sed flatten_b.sed
-r26096 ^/Build%20Scripts/flattenview/flattenall.bat flattenall.bat

Data\Stored Procedures - -r26096 ^/Build%20Scripts/flattensp/flatten.bat flatten.bat
-r26096 ^/Build%20Scripts/flattensp/flatten_a.sed flatten_a.sed
-r26096 ^/Build%20Scripts/flattensp/flatten_b.sed flatten_b.sed

Data\Views - -r26096 ^/Build%20Scripts/flattenview/flatten.bat flatten.bat
-r26096 ^/Build%20Scripts/flattenview/flatten_a.sed flatten_a.sed
-r26096 ^/Build%20Scripts/flattenview/flatten_b.sed flatten_b.sed
-r26096 ^/Build%20Scripts/flattenview/flattenall.bat flattenall.bat

The externals originally didn't have the "-r26096"; I added that in both trunk and the branch to see if it'd change anything, but it didn't. It seems that the extra mergeinfo has something to do with the externals though... each directory that has an external definition gets non-inheritable mergeinfo for /trunk, and every file in that directory gets inheritable mergeinfo for the same revision.

Why is svn doing that? Putting non-inheritable mergeinfo on the directory, then putting the same mergeinfo on the files in that directory seems to be the equivalent of just putting inheritable mergeinfo on the directory. Is it to prevent mergeinfo from propagating down to any new files/directories that are added later? Not really sure what the purpose of that would be though...

In any case, is there something I can do to have it not touch a bunch of mergeinfo each time I merge to this branch?

Reply via email to