Re: Help converting a large repository

Michael Haggerty <[email protected]> Mon, 15 Apr 2013 17:30:28 +0200
Newsgroups gmane.comp.version-control.subversion.cvs2svn.user
Message-ID <[email protected]>
On 04/15/2013 10:02 AM, Giulio Eulisse wrote:
> Ciao,
> 
>> Unless branches and tags were always created in sync across all
>> subprojects, this will be a messy problem.  CVS repositories that
>> consist of subsystems that were independently branched and tagged are
>> inherently difficult to represent in Git, where commits and
>> branches/tags are all repository-wide.  The problem is that it is
>> probably not possible to "match up" the subsystem branch trees into the
>> single, repository-wide branch tree required by Git and the result of an
>> attempt to do so will be a mess.
> 
>> I think it would be useful for you to take a step back and think about
>> what your *ideal* Git output repository would look like, for example if
>> you had thousands of intelligent human clerks convert it by hand.  Are
>> you sure that you even want want all of the subsystems to be converted
>> into a single Git repository, or would it be more in the Git style of
>> working to have a separate repo for each subsystem and knit them
>> together using something like submodules or subtree?
> 
> Thank you for the reply.
> 
> Maybe I did not explain myself, we do not care about the per package tags,
> what we would like to have is the global tags being migrated, for which we 
> want to impose the order in which they were done, which is stored in the separate DB.

The main question is whether the branching structure of each subproject
matches those of the others or whether the branching trees of the
subprojects are very different.  If the branching structures match up,
then you don't have to tell cvs2svn how the branches are related because
it can infer that information itself.  But you would have to ensure that
the corresponding branches and tags have the same names in each subproject.

> Is there a way to say:
> 
> v1.0.0 -> v2.0.0 -> v3.0.0
> 
> and have cvs2git simply interpolate the file revision changes
> between the tags? I was hoping the symbol-hints file could drive this kind of
> migration (by specifying the correct parent for global tags, which we
> always know), but I cannot get it to work.

Assuming that the subproject tags have different names than the
project-wide tag names that you want, you cannot do this via hints.  You
have to make the change at the very beginning of cvs2svn processing by
using symbol_transforms to rename the tags.  You will probably want a
SubtreeSymbolMapper for each subproject, telling how the symbols within
that project should be renamed.

But if the branch structures don't match up, you should definitely
consider converting each subproject into a separate git repo.

Michael

-- 
Michael Haggerty
[email protected]
http://softwareswirl.blogspot.com/

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1670&dsMessageId=3053373

To unsubscribe from this discussion, e-mail: [[email protected]].