views:

503

answers:

3

I have 5-10 independent projects that I want place under version control using Git. What is the best way to organize the projects/respositories:

  • Use one repository for each project
  • use one repository for all my work and use subdirectories for each project
  • Or something completely different

What has worked best for you and why?

+4  A: 

I'd definitely say use one repository for each project. Otherwise you're going to have all sort of crosstalk between projects, not to mention it's a pain to specify long paths if you're using command line git. Git works great with the one repository per project model, I can't really see any reason to use anything else; I don't think I ever really understood why SVN promoted working that way.

Marc Charbonneau
Just wanted to add that this also holds for SVN too. It is best if you have one repository per project.
Petros
I remember reading a lot of articles on setting up an SVN server that seemed to imply it was best to use one repo. Maybe I was just reading the wrong sources, though.
Marc Charbonneau
+3  A: 

To complete Marc's answer, going with one central repository (with all the projects inside) does not prevent multiple repositories, each with their own project.

Let's hear it from Linus himself:

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.

VonC
A: 

If the repository is corrupted.It effects all project teams.So repo for each project is good idea.

In principle what you are saying is corret. But it goes against the spirit of git to be having just one big shared repository. Each developer should have their own work area (on their workstation) under git control. So in effect you have redundancy and can restore the "central" repository from one or more developer's copies.
CyberED