On Wed, Dec 14, 2011 at 8:18 AM, Julian Foad <julianf...@btopenworld.com> wrote: > Here's a patch to reject silly merge attempts, which up to now give silly > results. > > This does not apply to all merges (general 2-URL and cherry-pick merges), but > the commonly used 'sync' and 'reintegrate' forms of merge only make sense > when the source and target 'branches' are related (have a common ancestor) > and are not the same. > > This patch applies such checks to the 'reintegrate' merge, simple 'sync' > merge, and the 'svn mergeinfo' command.
Hi Julian, This premise of this patch seems reasonable to me. I don't see that it thwarts any legitimate use cases. We'll longer be able to do things like update a WC target to a rev N<HEAD then 'sync' all the changes from N+1:HEAD, e.g.: C:\SVN\src-trunk-4>svn up Updating '.': At revision 1214356. C:\SVN\src-trunk-4>svn log -q -l1 ------------------------------------------------------------------------ r1214216 | stsp | 2011-12-14 07:38:48 -0500 (Wed, 14 Dec 2011) ------------------------------------------------------------------------ C:\SVN\src-trunk-4>svn up -r1214215 Updating '.': U subversion\libsvn_repos\load-fs-vtable.c Updated to revision 1214215. C:\SVN\src-trunk-4>svn merge ^^/subversion/trunk . DBG: util.c:1462: ancestor: https://svn.apache.org/repos/asf/subversion/trunk@1214215 DBG: util.c:1470: url1: https://svn.apache.org/repos/asf/subversion/trunk@1214358 DBG: util.c:1471: url2: https://svn.apache.org/repos/asf/subversion/trunk@1214215 ..\..\..\subversion\svn\main.c:2684: (apr_err=205000) svn: E205000: Try 'svn help' for more info ..\..\..\subversion\svn\merge-cmd.c:370: (apr_err=205000) ..\..\..\subversion\svn\util.c:1487: (apr_err=205000) svn: E205000: This merge requires two different but related branches ..\..\..\subversion\svn\util.c:1473: (apr_err=205000) svn: E205000: Source and target are the same branch: 'https://svn.apache.org/repos/asf/subversion/trunk@1214358' and https://svn.apache.org/repos/asf/subversion/trunk@1214215' But was this ever useful? I don't see how. We can still do this *if* we specify an actual revision/revision range. > A few tests currently fail with this patch -- tests that use the special "svn > merge FILE[@REV]" syntax. I'm currently investigating this and learning what > it's supposed to be doing. I assume you mean these two merge tests? 6 merging a file w/no explicit target path or revs [#785] 12 merge one file without explicit revisions Those fail because of the new limitation I described above. Again, I don't think this is necessarily a bad thing. > Comments? A bit bikesheddy, bit I wonder if it might make for a cleaner error messages if we use the repo root shorthand notation: For example, this: svn: E205000: Source and target are the same branch: '^/subversion/trunk@1145992' and '^/subversion/branches/1.7.x@1213741' Rather than this: svn: E205000: Source and target are the same branch: 'https://svn.apache.org/repos/asf/subversion/trunk@1145992' and 'https://svn.apache.org/repos/asf/subversion/branches/1.7.x@1213741' Paul