The options that come to mind are:
- Use RCS. For local version control over individual files RCS is a reasonable fit.
- To use a single repository for all the files, with CVS, Subversion, git, etc., either:
- Base your repository on the common shared parent directory, and only add and commit the required files and directories, using the 'ignore' capabilities of your version control software to keep it form nagging about stuff you don't want to version.
- Map the files into a simplified directory tree using symlinks and version this (as suggested by Pierre Lindenbaum)
- Consolidate the files into a simple tree for versioning, and either:
- Consolidate the files into a more version control friendly layout. In most cases your scripts should not care too much where they are, as long as their parameters allow for the specification of appropriate paths, either directly or through configuration files.
I'm going to suggest something a bit different from a tangle of symbolic links, something a bit more general, which is to use Modules to deploy versions of a given package, which could come from a folder on your file system or a specific branch revision off a
git repo, etc. In particular, this can be a very useful and clean way to manage scripts or programs with varied binary and version dependencies, a frequent problem in bioinformatics.