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:
Use an installation script to push them to their final locations
Build a package for your platform (e.g. RPM or deb) to install the files to the appropriate locations.
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.