Choice and setup of version control
Posted
by Peter M
on Super User
See other posts from Super User
or by Peter M
Published on 2010-05-24T00:41:41Z
Indexed on
2010/05/24
0:51 UTC
Read the original article
Hit count: 330
version-control
|setup
I am about to set up an new laptop and in the process transition to a new version control system as part of a general cleanup. Currently I use a centralized version control system (yes it is VSS, and yes I know all the pro's and con's of that system, but as a single user system it works well for me). I have very little requirements for a new system and I am free to choose among any of the current mainstream players, but cost constraints will push me towards oss. Some of my requirements are:
- Runs on a single machine (ie the laptop in question) under windows
- I am not sharing things with other developers or workers - this is more for my own historical benefits.
- I want to version source code, documentation and binary files
- I have a large hierarchy of projects that are unrelated (see below)
- I have files within the hierarchy that don't need to be controlled (but could be)
- Some projects use Visual Studio, so some integration there could be nice.
- There could be some sharing of files between jobs.
- I generally only need a small about of branching in code files
The directory hierarchy that I have at the moment is somewhat like:
Root
|
|--Customer #1
| |
| |--Job #1
| | |
| | |--Data files received from Customer for Job (not controlled)
| | |--Documentation files (controlled)
| | |--Project information files (not controlled - but could be)
| | |--Software Project Files (controlled)
| | |--Scratch dir for job (not controlled)
| |
| |--Job #2
| | (same structure as above)
|
|--Customer #2
| |..
|
|--Cusmtomer #n
|..
Currently I have about 22 customers with differing numbers of projects underneath them.
At the moment I have a single VSS repository based at the root of the directory structure. If I kept with a centralized system (ie SVN) I believe that I should keep the same approach and continue with a single repository based from the root dir. Is this a valid approach?
However if I move to a distributed tool then I am unsure of how I should handle the situation. My initial guess is that I should not have a repository based on the root of my entire directory structure - but that is a guess so I really don't know how valid it is.
Should I pitch a distributed approach at the Root, Customer, Job or sub-Job directory level?
Also what I am not clear on with distributed tools (and perhaps with SVN as well), is if I can branch parts of a repository. For example, I can see branching source code in software projects as being useful, but branching my documentation as not being useful. So if I pitch a repository at the Job level, can I just branch the Software Project Files? Or would all files in that Job be branched?
Every time I look at distributed tools I get a nagging feeling that they are not suited to my style of setup. I am uncomfortable with idea of having to manually set up something like 50 to 80 separate repositories (if I pitch at the Job level, or 20+ if at the Customer level) within my directory hierarchy. This feeling also extends to having all those repositories scattered around as well - however I do have a backup strategy that I trust, so this latter feeling is pretty well unfounded.
So what advice can you all give me? Thanks in advance!
© Super User or respective owner