Re: multiple branches or multiple repositories

From: Linus Torvalds <>
Date: 2006-11-03 18:11:53
On Fri, 3 Nov 2006, Han-Wen Nienhuys wrote:
> We're in the process of converting the LilyPond CVS repository at
> to GIT.  One of the questions we need to deal with, is how
> handle modules.
> There seem to be two approaches:
>  - for each module, create a separate git repository.  Inside the repository,
>    each subproject has its own branching
>  - put each module as a separate branch in a shared repository.
> I think the first option is the most natural one, but are there any issues,
> besides namespace pollution to the second option?

There are no real issues either way, and perhaps more importantly, it's 
not even something you have to decide on day one.

You can easily do it one way or the other, and either
 - switch around as needed
 - or even _mix_ the two approaches where it makes sense.

For example, it may be entirely sensible to have the common "distribution 
points" use a single shared repository that contains all modules as 
separate branches within the same repository.

But even though such a central distribution point repository is set up 
that way, individual developers may well decide that they are happier 
having separate repositories for different modules. The two approaches are 
not mutually incompatible, and you can fetch data and push it back out 
between both different kinds of repositories.

The namespace pollution - especially of tags - is indeed likely to be the 
worst issue. If you expect to have many independent modules in the same 
repository, you obviously shouldn't use tag-names like the Linux kernel 
uses (ie "v2.6.18"), since those would not be unambiguous in such a shared 

(The same is true of branches too, but perhaps less so if only because 
people are _already_ using different branch names between different 
repositories, and we have good support for translating a local branch 
name "X" into a remote branch name "Y" when transferring data between the 
two. In contrast, tagnames are kind of expected to be "shared")

But if you're ok with always just naming tags "modulename/release-1.2.3" 
or similar, you shouldn't really have any issues either way. And most 
importantly, if you do decide to go one way, and then later figure out 
that it would have been easier the other way, you can just switch between 
the two models, exactly because mixing them isn't really a problem.

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at
Received on Fri Nov 03 18:12:03 2006

This archive was generated by hypermail 2.1.8 : 2006-11-03 18:13:04 EST