On Fri, Jul 22, 2011 at 6:33 AM, Arwin Arni <arwin_at_collab.net> wrote:
> Hi,
>
> While doing a sync up merge to my branch, I noticed some subtree mergeinfo
> being recorded and decided to look into it's validity. I could trace it back
> to r1054277.
>
> In this revision, stefan2 made a copy of libsvn_diff/diff.h as
> libsvn_subr/adler32.c, presumably using a 1.5.x client (x < 5) because, this
> resulted in an 'empty' svn:mergeinfo property being set on the file. I say
> 1.5.x where x<5 because this was fixed in 1.5.5:
>
> <snip from CHANGES file>
> ...
> Version 1.5.5
> (22 Dec 2008, from /branches/1.5.x)
> http://svn.apache.org/repos/asf/subversion/tags/1.5.5
>
> User-visible changes:
> ...
> * do not create mergeinfo for wc-wc moves or copies (r34184, -585))
> ...
> </snip from CHANGES file>
>
> This 'empty' mergeinfo has caused all future merges to record subtree
> mergeinfo onto this file.
Hi Arwin,
I'm not entirely sure Stefan used an old version of 1.5. Because in
the same commit he copied ^/
subversion/trunk/subversion/libsvn_diff/diff.h to
^/subversion/trunk/subversion/include/private/svn_adler32.h. Like the
copy of util.c to adler32.c, the source had no explicit mergeinfo and
the destination does, but in this case adler32.h doesn't have empty
mergeinfo, it has the mergeinfo diff.h would have inherted from
^/subversion/trunk_at_1054276:
C:\SVN\src-trunk-4>svn pg svn:mergeinfo
^^/subversion/trunk/subversion/include/private/svn_adler32.h_at_1054277
/subversion/branches/1.5.x-r30215/subversion/libsvn_diff/diff.h:870312
/subversion/branches/atomic-revprop/subversion/libsvn_diff/diff.h:965046-1000689
/subversion/branches/bdb-reverse-deltas/subversion/libsvn_diff/diff.h:872050-872529
/subversion/branches/diff-callbacks3/subversion/libsvn_diff/diff.h:870059-870761
/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_diff/diff.h:870728-871118
/subversion/branches/double-delete/subversion/libsvn_diff/diff.h:870511-872970
/subversion/branches/explore-wc/subversion/libsvn_diff/diff.h:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
/subversion/branches/file-externals/subversion/libsvn_diff/diff.h:871779-873302
/subversion/branches/fs-rep-sharing/subversion/libsvn_diff/diff.h:869036-873803
/subversion/branches/fsfs-pack/subversion/libsvn_diff/diff.h:873717-874575
/subversion/branches/gnome-keyring/subversion/libsvn_diff/diff.h:870558-871410
/subversion/branches/http-protocol-v2/subversion/libsvn_diff/diff.h:874395-876041
/subversion/branches/in-memory-cache/subversion/libsvn_diff/diff.h:869829-871452
/subversion/branches/issue-2779-dev/subversion/libsvn_diff/diff.h:965496-984198
/subversion/branches/issue-2843-dev/subversion/libsvn_diff/diff.h:871432-874179
/subversion/branches/issue-3000/subversion/libsvn_diff/diff.h:871713,871716-871719,871721-871726,871728,871734
/subversion/branches/issue-3067-deleted-subtrees/subversion/libsvn_diff/diff.h:873375-874084
/subversion/branches/issue-3148-dev/subversion/libsvn_diff/diff.h:875193-875204
/subversion/branches/issue-3220-dev/subversion/libsvn_diff/diff.h:872210-872226
/subversion/branches/issue-3242-dev/subversion/libsvn_diff/diff.h:879653-896436
/subversion/branches/issue-3334-dirs/subversion/libsvn_diff/diff.h:875156-875867
/subversion/branches/issue-3668-3669/subversion/libsvn_diff/diff.h:1031000-1035744
/subversion/branches/kwallet/subversion/libsvn_diff/diff.h:870785-871314
/subversion/branches/log-g-performance/subversion/libsvn_diff/diff.h:870941-871032
/subversion/branches/merge-skips-obstructions/subversion/libsvn_diff/diff.h:874525-874615
/subversion/branches/nfc-nfd-aware-client/subversion/libsvn_diff/diff.h:870276,870376
/subversion/branches/performance/subversion/libsvn_diff/diff.h:982355,983764,983766,984927,984984,985014,985037,985046,985472,985477,985482,985500,985606,985669,986453,987888,987893,995507,995603,1001413,1025660,1028092,1028094,1028104,1029038,1029042,1029090,1029092,1029335,1030763
/subversion/branches/py-tests-as-modules/subversion/libsvn_diff/diff.h:956579-1033052
/subversion/branches/ra_serf-digest-authn/subversion/libsvn_diff/diff.h:875693-876404
/subversion/branches/reintegrate-improvements/subversion/libsvn_diff/diff.h:873853-874164
/subversion/branches/subtree-mergeinfo/subversion/libsvn_diff/diff.h:876734-878766
/subversion/branches/svn-mergeinfo-enhancements/subversion/libsvn_diff/diff.h:870119-870195,870197-870288
/subversion/branches/svn-patch-improvements/subversion/libsvn_diff/diff.h:918519-934609
/subversion/branches/svnpatch-diff/subversion/libsvn_diff/diff.h:865738-876477
/subversion/branches/svnraisetc/subversion/libsvn_diff/diff.h:874709-875149
/subversion/branches/svnserve-logging/subversion/libsvn_diff/diff.h:869828-870893
/subversion/branches/tc-issue-3334/subversion/libsvn_diff/diff.h:874697-874773
/subversion/branches/tc-merge-notify/subversion/libsvn_diff/diff.h:874017-874062
/subversion/branches/tc-resolve/subversion/libsvn_diff/diff.h:874191-874239
/subversion/branches/tc_url_rev/subversion/libsvn_diff/diff.h:874351-874483
/subversion/branches/tree-conflicts/subversion/libsvn_diff/diff.h:868291-873154
/subversion/branches/tree-conflicts-notify/subversion/libsvn_diff/diff.h:873926-874008
So I suspect Stefan did a URL-to-WC copy, which makes inherited
mergeinfo explicit on the target. Possibly he did the same thing when
copying diff.c to adler32.c but then set empty mergeinfo on adler32.c
for some reason. Or maybe he did a URL-to-WC copy for one and a
WC-to-WC copy for the other with a pre 1.5.5 client.
> I'd like to know if it is safe to remove this mergeinfo for good.
Safe? Sure, for your feature branch removing it shouldn't cause any
problems, but I think we should keep it. Merge tracking should handle
it without any problems[1] and we should eat our own dogfood re
subtree mergeinfo.
Paul
[1] I'm working right now with your particular branch and a problem
where the subtree mergeinfo on it is causing noop editor drives.
>
> $ svn log -v -c1054277 https://svn.apache.org/repos/asf/subversion/trunk
> ------------------------------------------------------------------------
> r1054277 | stefan2 | 2011-01-02 01:32:36 +0530 (Sun, 02 Jan 2011) | 17 lines
> Changed paths:
> A /subversion/trunk/subversion/include/private/svn_adler32.h (from
> /subversion/trunk/subversion/libsvn_diff/diff.h:1054248)
> M /subversion/trunk/subversion/libsvn_diff/diff.h
> M /subversion/trunk/subversion/libsvn_diff/diff_file.c
> M /subversion/trunk/subversion/libsvn_diff/diff_memory.c
> M /subversion/trunk/subversion/libsvn_diff/util.c
> A /subversion/trunk/subversion/libsvn_subr/adler32.c (from
> /subversion/trunk/subversion/libsvn_diff/util.c:1054251)
>
> Move & rename svn_diff__adler32 to svn__adler32 to make it available
> to e.g. svnlib_delta where I will use it soon.
>
> * subversion/libsvn_subr/adler32.c
> (ADLER_MOD_BASE): moved from libsvn_diff/util.c
> (svn__adler32): moved and renamed from libsvn_diff/util.c
> * subversion/include/private/svn_adler32.h
> (svn__adler32): moved declaration from libsvn_diff/diff.h
> * subversion/libsvn_diff/util.c
> (ADLER_MOD_BASE, svn_diff__adler32): moved
> * subversion/libsvn_diff/diff.c
> (svn_diff__adler32): moved
>
> * subversion/libsvn_diff/diff_memory.c
> (datasource_get_next_token): adapt to renamed adler32() function
> * subversion/libsvn_diff/diff_file.c
> (datasource_get_next_token): dito
> ------------------------------------------------------------------------
>
> Regards,
> Arwin Arni
>
Received on 2011-07-22 19:19:29 CEST