On Thu, Dec 17, 2009 at 8:48 AM, Philip Martin <philip.mar...@wandisco.com> wrote: > Paul Burba <ptbu...@gmail.com> writes: > >> Hyrum ran into a problem when reintegrating a branch back to 1.6.x >> using the (at the time) latest 1.6.x client. Here is the merge he did >> (though this has a pegged source because the backport branch was >> deleted): >> >> 1.6.x.>svn merge ^^/subversion/branches/1.6.x-r40...@891008 . --reintegrate >> ..\..\..\subversion\libsvn_ra_neon\util.c:546: (apr_err=160013) >> svn: '/repos/asf/!svn/bc/875961/subversion/branches/1.6.x' path not found >> >> Unfortunately this reintegrate works with 1.6.6, so we have a regression. >> >> I've traced the cause to r890993 (Reintegrate the 1.6.x-r889840 >> branch) which was my attempt to address the myriad of problems caused >> by issue #3547 http://subversion.tigris.org/issues/show_bug.cgi?id=3547, >> which converted all the mergeinfo in our repository from absolute to >> relative merge source paths when we loaded it into the ASF repos. I >> haven't been able to fix the reintegrate problem Hyrum encountered, >> heck it's not exactly clear to me what is going wrong, but I'm working >> on it. > > As one who voted for r890993 I wouldn't object if it was reverted and > we released without it. It is a change in behaviour, so I guess that > counts as a regression, but what seems to be happening is that the old > code ignores some of the incorrect mergeinfo because the paths don't > match. It's possible that the new behaviour, getting an error when > the mergeinfo is broken, is better.
Philip, Short Story: I agree, calling this a regression was a bit premature. Long Story: Now that we correctly interpret mergeinfo with relative paths (r890993) we actually *consider* mergeinfo with relative source paths. Where Hyrum ran into a problem there was some very dubious mergeinfo on CHANGES in both the reintegrate source and the target: On the target: 1.6.6>svn pg svn:mergeinfo ^^/subversion/branches/1.6.x/chan...@891108 /subversion/branches/1.5.x-r30215/CHANGES:866657 /subversion/branches/1.6.x-UNC-paths/CHANGES:872816-872890 /subversion/branches/1.6.x-dirent-basename/CHANGES:872475-872607 /subversion/branches/1.6.x-future-proof/CHANGES:880259-884209 /subversion/branches/1.6.x-issue3443/CHANGES:874942-875825 /subversion/branches/1.6.x-issue3519/CHANGES:880376-889934 /subversion/branches/1.6.x-no-svn_uri/CHANGES:872705-872760 /subversion/branches/1.6.x-r36178/CHANGES:874221-874229 /subversion/branches/1.6.x-r36252/CHANGES:872673-873133 /subversion/branches/1.6.x-r37622/CHANGES:874044-874338 /subversion/branches/1.6.x-r37627/CHANGES:874049-874273 /subversion/branches/1.6.x-r37857/CHANGES:874277-874281 /subversion/branches/1.6.x-r37953/CHANGES:876154-876416 /subversion/branches/1.6.x-r37988/CHANGES:874408-875242 /subversion/branches/1.6.x-r38000/CHANGES:875428-876112 /subversion/branches/1.6.x-r38222/CHANGES:874644-875236 /subversion/branches/1.6.x-r38572/CHANGES:875006-875011 /subversion/branches/1.6.x-r38799/CHANGES:875225-875262 /subversion/branches/1.6.x-r38927/CHANGES:875347-875521 /subversion/branches/1.6.x-r39557/CHANGES:876013-876252 /subversion/branches/1.6.x-r39887/CHANGES:876369-876411 /subversion/branches/1.6.x-r40452/CHANGES:880530-890996 /subversion/branches/1.6.x-r889840/CHANGES:889888-890974 /subversion/branches/bdb-reverse-deltas/CHANGES:868395-868874 /subversion/branches/diff-callbacks3/CHANGES:866404-867106 /subversion/branches/dont-save-plaintext-passwords-by-default/CHANGES:867073-867463 /subversion/branches/double-delete/CHANGES:866856-869315 /subversion/branches/file-externals/CHANGES:868124-869647 /subversion/branches/fs-rep-sharing/CHANGES:865381-870148 /subversion/branches/fsfs-pack/CHANGES:870062-870920 /subversion/branches/gnome-keyring/CHANGES:866903-867755 /subversion/branches/in-memory-cache/CHANGES:866174-867797 /subversion/branches/issue-2843-dev/CHANGES:867777-870524 /subversion/branches/issue-3000/CHANGES:868058,868061-868064,868066-868071,868073,868079 /subversion/branches/issue-3067-deleted-subtrees/CHANGES:869720-870429 /subversion/branches/issue-3148-dev/CHANGES:871538-871549 /subversion/branches/issue-3220-dev/CHANGES:868555-868571 /subversion/branches/issue-3334-dirs/CHANGES:871501-872212 /subversion/branches/kwallet/CHANGES:867130-867659 /subversion/branches/log-g-performance/CHANGES:867286-867377 /subversion/branches/merge-skips-obstructions/CHANGES:870870-870960 /subversion/branches/reintegrate-improvements/CHANGES:870198-870509 /subversion/branches/svn-mergeinfo-enhancements/CHANGES:866464-866540,866542-866633 /subversion/branches/svnpatch-diff/CHANGES:868250,868331 /subversion/branches/svnserve-logging/CHANGES:866173-867238 /subversion/branches/tc-issue-3334/CHANGES:871042-871118 /subversion/branches/tc-merge-notify/CHANGES:870362-870407 /subversion/branches/tc-resolve/CHANGES:870536-870584 /subversion/branches/tc_url_rev/CHANGES:870696-870828 /subversion/branches/tree-conflicts/CHANGES:864636-869499 /subversion/branches/tree-conflicts-notify/CHANGES:870271-870353 /subversion/trunk/CHANGES:836421-837700,875962-876471,876507,876571,880274-880275,880474,880525-880526,881905,884842,886164,886197,888979,889081,889840 On the source: 1.6.6>svn pg svn:mergeinfo ^^/subversion/branches/1.6.x-r40452/chan...@891008 subversion/branches/1.5.x-r30215/CHANGES:866657 subversion/branches/1.6.x-UNC-paths/CHANGES:872816-872890 subversion/branches/1.6.x-dirent-basename/CHANGES:872475-872607 subversion/branches/1.6.x-issue3443/CHANGES:874942-875825 subversion/branches/1.6.x-no-svn_uri/CHANGES:872705-872760 subversion/branches/1.6.x-r36178/CHANGES:874221-874229 subversion/branches/1.6.x-r36252/CHANGES:872673-873133 subversion/branches/1.6.x-r37622/CHANGES:874044-874338 subversion/branches/1.6.x-r37627/CHANGES:874049-874273 subversion/branches/1.6.x-r37857/CHANGES:874277-874281 subversion/branches/1.6.x-r37953/CHANGES:876154-876416 subversion/branches/1.6.x-r37988/CHANGES:874408-875242 subversion/branches/1.6.x-r38000/CHANGES:875428-876112 subversion/branches/1.6.x-r38222/CHANGES:874644-875236 subversion/branches/1.6.x-r38572/CHANGES:875006-875011 subversion/branches/1.6.x-r38799/CHANGES:875225-875262 subversion/branches/1.6.x-r38927/CHANGES:875347-875521 subversion/branches/1.6.x-r39557/CHANGES:876013-876252 subversion/branches/1.6.x-r39887/CHANGES:876369-876411 subversion/branches/bdb-reverse-deltas/CHANGES:868395-868874 subversion/branches/diff-callbacks3/CHANGES:866404-867106 subversion/branches/dont-save-plaintext-passwords-by-default/CHANGES:867073-867463 subversion/branches/double-delete/CHANGES:866856-869315 subversion/branches/file-externals/CHANGES:868124-869647 subversion/branches/fs-rep-sharing/CHANGES:865381-870148 subversion/branches/fsfs-pack/CHANGES:870062-870920 subversion/branches/gnome-keyring/CHANGES:866903-867755 subversion/branches/in-memory-cache/CHANGES:866174-867797 subversion/branches/issue-2843-dev/CHANGES:867777-870524 subversion/branches/issue-3000/CHANGES:868058,868061-868064,868066-868071,868073,868079 subversion/branches/issue-3067-deleted-subtrees/CHANGES:869720-870429 subversion/branches/issue-3148-dev/CHANGES:871538-871549 subversion/branches/issue-3220-dev/CHANGES:868555-868571 subversion/branches/issue-3334-dirs/CHANGES:871501-872212 subversion/branches/kwallet/CHANGES:867130-867659 subversion/branches/log-g-performance/CHANGES:867286-867377 subversion/branches/merge-skips-obstructions/CHANGES:870870-870960 subversion/branches/reintegrate-improvements/CHANGES:870198-870509 subversion/branches/svn-mergeinfo-enhancements/CHANGES:866464-866540,866542-866633 subversion/branches/svnpatch-diff/CHANGES:868250,868331 subversion/branches/svnserve-logging/CHANGES:866173-867238 subversion/branches/tc-issue-3334/CHANGES:871042-871118 subversion/branches/tc-merge-notify/CHANGES:870362-870407 subversion/branches/tc-resolve/CHANGES:870536-870584 subversion/branches/tc_url_rev/CHANGES:870696-870828 subversion/branches/tree-conflicts/CHANGES:864636-869499 subversion/branches/tree-conflicts-notify/CHANGES:870271-870353 subversion/trunk/CHANGES:836421-837700,872307-876471,876507,876571,880525-880526 What you want to notice here is the mergeinfo 'subverison/trunk/CHANGES:836421-837700', this actually predates the creation of subversion/trunk/CHANGES, which was in r841356. How this got into our repos in the first place is a good question, and one I am trying to track down, see http://mail-archives.apache.org/mod_mbox/subversion-dev/200912.mbox/browser, but I don't think it should impact the decision to roll 1.6.7. There may be another bug here, but since the offending mergeinfo was created a month prior to 1.6.6 we are not dealing with a regression. Anyway, onto the "regression". A 1.6.6 client, not realizing that the merge source "subversion/trunk/CHANGES" == "/subversion/trunk/CHANGES" simply ignores the relative pathed mergeinfo. But with r890993 the relative path is interpreted as an absolute path and so the reintegrate code thinks that we have done some merge(s) from trunk to the 1.6.x-r889840 branch, but the code doesn't handle the case where that mergeinfo describes non-existent path-revs, ultimately producing the error that Hyrum saw. I've hacked a crude fix to ignore mergeinfo on the reintegrate source that predates the common ancestor of the reintegrate target and source. This seems to work fine, though it still needs some more testing. Regardless, I don't think this is a true regression, just a new bug, and as such, not something that should hold up 1.6.7. Some final thoughts: If we revert r890993, we will have different problems with reintegrate, namely that merges that really were done from 'trunk' to 'some-branch' will be ignored if we try to reintegrate 'some-branch' back to 'trunk' and the reintegrate merge will fail/break. Of course this won't matter much since the merge/mergeinfo subcommands, on our own repository anyway (and any other bitten by issue #3547), will effectively be useless with a 1.6.7 client, see http://mail-archives.apache.org/mod_mbox/subversion-dev/200912.mbox/browser. Paul