Subject: Re: Best way to re-do a CVS repository with git?

From: Jakub Narebski <[email-masked]>
Date: Sat, 19 Apr 2008 01:23:25 -0700 (PDT)

I think the subject would better read:
"What is best way to represent multimodule CVS repository in Git?"

[email-masked] writes:

> I have a large CVS repository (1.5 GB without its history) that I'd
> like to convert to git, but I'm not sure about the right way to set it
> up. If I need to change the way I'm thinking about source code
> management, that's fine too, but here's what I have today in a single
> CVS repository:
> 
> MyProject
>    Apps                 # Only apps people use this.
>    Common               # Everyone uses this.
>    Firmware             # Only firmware people use this.
>    External/ProjectA    # Only app people use this.
>    External/ProjectB    # Everyone uses this.
>    External/ProjectC    # Only firmware people use this. This is 1 GB
> of code by itself.
> 
> I manage this today with CVS modules, one for apps people and one for
> firmware people (and another CVS module with everything for people
> like me that work on both).
> 
> I initially thought I'd create separate git repositories for each
> piece, but I'm not sure how that would work when it comes to tagging
> an entire release (i.e. a tag that spans multiple repositories). Or
> how it would handle a git repository within a directory managed by
> another git repository.
> 
> What's the best way to set up something like this with git?

I think that such setup would be best managed by creating Git
repository for each piece, and "integration" repositories, one for
apps people, and one for firmware people, using submodule support in
Git.

Tagging entire release would be tagging in "integration" repository,
the one using submodules.

See also:
 * http://git.or.cz/gitwiki/SubmoduleSupport
 * http://git.or.cz/gitwiki/GitSubmoduleTutorial
 * http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html
   aka git-submodule(1)
-- 
Jakub Narebski
Poland
ShadeHawk on #git