2009-05-28 95 views
17

在我的场景中,我有一个程序分析数据输入文件并生成其他数据输出文件。我想对版本控制程序进行版本控制,并且我想要版本控制数据文件,并且作为首选项,我希望在程序的工作副本中包含数据文件的工作副本。我希望程序和数据分开版本控制,以减少“噪音”。该程序不依赖于数据文件。git子模块是在工作副本中拥有工作副本的唯一安全方式吗?

如果我使用git子模块,那么当数据目录内发生事情(我认为提交的更新)时,程序的版本控制会注意到子模块有更新。如果程序依赖于数据,那么这很有用,但它不会。

在这种情况下,是否有可能在不使用git子模块的情况下在另一个工作副本中拥有工作副本?

回答

20

可以简单地在Git中“嵌套”工作副本。因此,如果你克隆你的程序库,那么在你的数据文件的克隆中,你可以单独使用它们。当Git执行文件操作时,它会搜索以上的目录树查找.git目录,因此在数据存储库中执行的Git操作不会影响程序存储库。如果您这样做,您可能需要将数据目录的名称添加到.gitignore以减少来自程序存储库的噪音。

+0

喜欢听这个。这种方法有什么可能出错的吗?或者它只是工作? – 2012-01-13 14:14:56

1

这也是一种有用的解决方法,在Heroku和rails中处理需要版本化插件的情况。目前,Heroku不支持git子模块,所以嵌套工作副本似乎是最好的解决方案。在这种情况下,您不想将插件目录添加到.gitignore中,因为在这种情况下,您将无法上传您的插件推送到heroku,但se la vi。希望Heroku最终能够支持git子模块。