tags:

views:

242

answers:

2

In my scenario, I have a program that analyzes data input files and produces other data output files. I want to version control the program, and I want to version control the data files, and as a matter of preference, I want to have the working copy of the data files within the working copy of the program. I want the program and data to be version controlled separately to reduce "noise". The program does not have a dependency on the data files.

If I use git submodules, then when things happen within the data directory (committed updates I think), the version control for the program notes that there's an update with the submodule. Which'd be useful if the program depended on the data, but it doesn't.

In such a scenario, is it possible to have a working copy within another working copy without using git submodules?

+4  A: 

It's possible to simply "nest" working copies in Git. So if you clone your program repository, then inside that make a clone of your data files, then you can work with them independently. When Git performs file operations, it searches up the directory tree looking for a .git directory, so Git operations performed in the data repository won't affect the program repository. If you do this, you may want to add the name of the data directory to .gitignore to reduce noise from the program repository.

Greg Hewgill
A: 

This is also a useful workaround methinks in working with Heroku and rails in situations where you have plugins that need to be versioned. Currently, Heroku does not support git submodules, so nesting working copies seems like the best solution. In this case, you wouldn't want to add the plugin directory to .gitignore, as in this case you would fail to upload your plugins on pushing to heroku, but se la vi. Hopefully, Heroku will eventually support git submodules.

metasoarous