Search code examples
svnsvn-reintegrate

How can I reintegrate an already reintegrated and rolled-back branch in SVN?


We did following ugly thing:

svn history

So, how can we achieve another reintegrate?

What did I try so far?

  • well, the obvious merge - which fails brutally!
  • creating a patch and apply it to trunk (which should work, as it diffs the files with no svn only...)
  • creating another branch @ trunk r101 and merge all the changes from first branch - fails brutally :)

edit:

merge-infos for trunk do not show any merged revisions of the desired branch (as I've rolled them back with r101)


Solution

  • This should be just a special case of a problem I had: Undo reverse merge in Subversion, or double-reverse merge

    I'd recommend trying to just rollback r101.

    EDIT

    Okay, let's say your repo is set up as follows:

    svnadmin create mergetest
    svn co file:///home/adam/tmp/mergetest mergetest-co
    cd mergetest-co/
    svn mkdir trunk
    svn mkdir branches
    svn ci -m "Initial setup"
    
    echo "Hello, world!" > trunk/test
    svn add trunk/test
    svn ci -m "Initial trunk changes"
    
    svn cp file:///home/adam/tmp/mergetest/trunk file:///home/adam/tmp/mergetest/branches/branch -m "Creating branch"
    svn up
    
    echo "Change on trunk." >> trunk/test
    svn ci -m "Change on trunk"
    
    svn merge file:///home/adam/tmp/mergetest/trunk branches/branch
    svn ci -m "Merge from trunk"
    
    echo "Change on branch." >> branches/branch/test
    svn ci -m "Change on branch"
    
    svn up
    svn merge --reintegrate file:///home/adam/tmp/mergetest/branches/branch trunk
    svn ci -m "Reintegrate merge" # Revision 7                                                                                                                                          
    
    svn merge -c -7 trunk trunk
    svn ci -m "Undoing reintegration" # Revision 8
    

    At this point, undoing the undo works: svn merge -c -8 trunk trunk. Also, reintegrating again works: svn merge --reintegrate file:///home/adam/tmp/mergetest/branches/branch trunk. Since your reintegrate was rolled back, there should be no problem with simply reintegrating again. If it doesn't work, my setup must not match your setup, so some other detail must be the problem.