Trent Nelson <tr...@snakebite.org> writes: > On 7/8/12 11:48 AM, "Daniel Shahaf" <d...@daniel.shahaf.name> wrote: > >>Daniel Shahaf wrote on Sat, Jul 07, 2012 at 15:09:38 +0100: >>> How can we have a 'modify-file' within an added-without-copyfrom tree? > > That's a pretty impressive invariant violation. Enversion would have > caught it, but only because we assert that a modify's previous path must > match its current path -- not because we specifically look for this > situation.
"svnadmin verify" detects the problem because the path does not exist in the previous revision: svnadmin: E160013: File not found: revision 1356316, path '/lucene/cms/trunk/content/solr/api-4_0_0_ALPHA/org/apache/solr/handler/loader/package-summary.html That is really just a side-effect of another check; it's not a reliable way to detect this sort of corruption since it could be defeated if the modify-file occurred within a replace-without-copyfrom, rather than an add-without-copyfrom, and the path existed in the replaced tree. > I've also never come across this in the wild. We should definitely ping > `rmuir` to find out how he committed that revision; platform, version, etc. The operation log on people.a.o has: [02/Jul/2012:16:11:33 +0000] xx.xx.xx.xx rmuir commit r1356317 790 - The access log has: svn.apache.org xx.xx.xx.xx - rmuir [02/Jul/2012:16:11:33 +0000] "MERGE /repos/ asf/lucene/cms/trunk/content/solr HTTP/1.1" 200 49122 "-" "SVN/1.7.2 neon/0.29.6 " - 443 It's a v2 protocol commit. These lines are timestamped 16:11:33 but the surrounding lines are timestamped 16:24:43 so there was a 13min server-side post-commit period. Perhaps the SQLite rep-cache update? >>>Isn't svnsync correct to complain in this case? > > Definitely. > >>I'd like to resolve the situation on the live svn.a.o repository. I see >>a couple of ways to do so: >> >>- Hand-edit the revision file, changing "modify-file" to "add-file " >> >>- Eliminate r1356317 from history: create an svnsync copy of /repos/asf >> using an authz file that excludes >>/lucene/cms/trunk/content/solr/api-4_0_0_ALPHA >> (or maybe just >>/lucene/cms/trunk/content/solr/api-4_0_0_ALPHA/org/apache/solr/handler/loa >>der/package-summary.html) >> and have the Lucene PMC recreate that tag later >> >>Thoughts? > > I'd lean towards a scripted version of option 1. You could then > disseminate the script to svnsync mirror admins (like myself), perhaps via > an ASF/infrastructure blog post? I think it should be possible to edit the revision file. Changing "modify-file" to "add-file" would reduce the length of the file but I think that is OK as all the offsets within the file are to locations before the change. Or we could use "add-file " with blank padding as svn_cstring_tokenize will skip the extra blanks. -- Cerified & Supported Apache Subversion Downloads: http://www.wandisco.com/subversion/download