Search code examples
gitsvnversion-controllayered

Layered Version Control?


I am looking for a version control system which has a specific feature, that I'm not sure what to call besides "layered". Essentially what I am looking for is to have a "primary" project "A". Let's say it has a directory structure like this:

A/
|
+-config/
|
+-src/
|
+-data/

A is where the most of the code is, but I don't want to deploy A, A is more of a template for what I really want to deploy... So I want to have a project B, which has the contents of A (should be read-only), but overlayed with my local stuff such as configurations and data specific to B.

This way, I can make changes in A, then "update" in B which would pull in the changes to the core, but not be effected by the project specific tweaks.

If config and data were empty, I could just omit them from A and play games with symlinks and such, but I do want them to be able to hold some core config and data files as well.

Is there a version control system which supports this type of thing? If so, how does it work?


Solution

  • It sounds like you are looking for the concept of a "branch", with deployment branches where you make configuration changes but not core changes. You can then merge the core changes into your deployment branches from time to time.

    Any modern version control system for code supports branches.