Yonik pointed out on #lucene-dev IRC 
<http://colabti.org/irclogger/irclogger_log/lucene-dev?date=2011-07-12#l356> 
that SVN history for trunk/solr/ seems to be borked following my SOLR-2452 
commit.

AFAICT, I caused this problem by using "svn merge --reintegrate 
https://svn.apache.org/repos/asf/lucene/branches/solr2452"; to transfer the 
SOLR-2452 changes to trunk.  I had thought that this method would preserve 
trunk history better than other available options.  I was wrong.

I now think that for mass restructuring, rather than a dedicated branch, it's 
better to keep the changes as an svn movement script and a patch, even though 
this requires regular "svn diff >../my.patch ; svn --recursive revert . ; svn 
update ; patch -p0 <../my.patch" cycles to keep up with concurrent development.

Here's how I'd like to fix the problem:

1. Backport to branch_3x by re-creating the SOLR-2452 changes as an svn 
movement script + patch (this is underway now), applying them, then committing. 
 At this point, trunk and branch_3x will be in sync and devs can get back to 
normal backporting procedure.  branch_3x won't suffer the same history problem 
as trunk.

2. Create a "newtrunk" branch (with solr2452 in the name somehow), copying from 
trunk at the revision just before SOLR-2452 was committed.

3. Convert all SOLR-2452 changes into a single svn movement script + patch, 
then apply them to "newtrunk" and commit.  At this point, the structure and 
content of the "newtrunk" branch should be identical to trunk right after the 
SOLR-2452 commit, except for history-tracking svn properties.

4. Merge to "newtrunk" each commit applied to trunk since SOLR-2452 was 
committed to trunk, and commit each with the original log message.

5. svn rm trunk ; svn mv newtrunk trunk (with URLs, not WC paths)

The disadvantages I can think of to using the above approach: a) the post-2452 
re-commits (#4 above) will be recorded as committed by me instead of the 
original committer; and b) the large amount of work required to make it happen 
(I think it will be worth it though - I'm a big fan of SVN history.)

The main advantage to this approach is that development can proceed normally.  
The only dev pain, AFAIK, will be the need to re-checkout after the process is 
complete.

Thoughts?

Steve

Reply via email to