Subject: Re: [Svnmerge] Failure to automatically locate branch point
From: Giovanni Bajo <[email-masked]>
To: David Abrahams <[email-masked]>
Cc: [email-masked]
Date: Sun, 04 Nov 2007 16:46:33 +0100

On gio, 2007-11-01 at 21:31 -0400, David Abrahams wrote:

> Using svnmerge downloaded today from
> http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge/svnmerge.py
> I tried to follow
> http://www.orcaware.com/svn/wiki/Svnmerge.py#Merging_branches_back_to_trunk
> and found that it didn't work (no changes were merged) unless I
> followed the procedure supposedly required only for versions of
> svnmerge.py older than r22788.
> 
> This was, specifically, merging
> http://svn.boost.org/svn/boost/branches/RC_1_34_0/boost into
> http://svn.boost.org/svn/boost/trunk@40670
> in case someone wants to try and reproduce it.

There's something weird in the way the branch was created (through
cvs2svn). Specifically, the branch contains the additional "/boost"
directory that you mentioned in the command line, but the history shows
the top-level branch directory was copied:

------------------------------------------------------------------------
r33417 | (no author) | 2006-03-21 03:26:31 +0100 (mar, 21 mar 2006) | 1
line
Changed paths:
   A /branches/RC_1_34_0 (from /trunk:33416)
   D /branches/RC_1_34_0/CVSROOT
   D /branches/RC_1_34_0/boost/Jamfile.v2
   A /branches/RC_1_34_0/boost/libs/statechart/doc/rationale.pdf
(from /trunk/boost/libs/statechart/doc/rationale.pdf:19650)
   A /branches/RC_1_34_0/boost/libs/statechart/doc/reference.pdf
(from /trunk/boost/libs/statechart/doc/reference.pdf:21241)
   A /branches/RC_1_34_0/boost/libs/statechart/doc/tutorial.pdf
(from /trunk/boost/libs/statechart/doc/tutorial.pdf:19650)

This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
------------------------------------------------------------------------

This confuses svnmerge.py because it does not detect r33417 as the
revision in which RC_1_34_0/boost was created.

[[ From the looks of it, it seems like whoever run the cvs2svn
conversion used the wrong options and converted the whole repository
(instead of doing it per-module), thus causing this weird layout
(BRANCH/MODULE, or trunk/MODULE). With the correct options to cvs2svn,
the SVN layout would have been MODULE/branches/BRANCHNAME and
MODULE/trunk. I guess it's too late, though. ]]

I think we can't help it: this is one of those weird cases where you are
really supposed to pass the explicit "-r" range to "svnmerge init". 

Everything should go smooth for branches created directly in SVN.
-- 
Giovanni Bajo
Develer S.r.l.
http://www.develer.com