views:

21

answers:

1

I'm working for a web development company and we're thinking about using GitHub for version control. We work with several different .NET-based CMS-platforms and of course with a lot of different customers.

We have a standard code base for each CMS which we start from when building a new site. We of course would like to maintain that and make it possible to merge some changes from a developed site (when the standard code base has been improved in some way).

We often need to make small changes to a published site at a later date and would like to be able to do this with minimal effort (i.e. the customer gladly pays for us to fix his problem in 2 hours, but doesn't want to pay for a 2 hour set up first).

How should we set this up to be able to work in an efficient fashion? I'm not very used to distributed version control (I've worked with CVS, Subversion and Clear Case before), but from my imagination we could:

  1. Set up one repository for each customer, start with a copy of the standard code base and go from there. Lots of repositories of course.
  2. Set up one repository for each CMS and then branch off one branch for each customer. This is probably (?) the best way, but what happens when we have 100 customers (=branches) in the same repository? It also doesn't feel entirely nice that we create a lot of branches that we don't really have any intention of ever merging back to the main branch.

I don't know, perhaps lots of branches is only a problem in my imagination or perhaps there are better ways to do this that I haven't thought about. I would be interested in any experince in similar problems.

Thank you for your time and help.

A: 

With Git, several repos make sense for submodules purpose (sharing common component, see nature of Git submodules, in the third part of the answer)

But in your case, one repo with a branch per customer can work, provided you are using the branches to:

  • isolate some client-specific changes (and long-lived branch with no merging back to master are ok),
  • while rebasing those same branches on top of master (which contains the common code, with common evolutions needed by all the branches).
VonC
Thank you for your insight, VonC!
Martin Steer