git子模块是在工作副本中拥有工作副本的唯一安全方法吗?

时间:2009-05-28 01:19:56

标签: git git-submodules

在我的场景中,我有一个分析数据输入文件并生成其他数据输出文件的程序。我想版本控制程序,我想版本控制数据文件,并且作为优先选择,我希望在程序的工作副本中拥有数据文件的工作副本。我希望程序和数据分别进行版本控制,以减少“噪音”。该程序不依赖于数据文件。

如果我使用git子模块,那么当数据目录中发生事情时(我认为已提交的更新),程序的版本控制会注意到子模块有更新。如果程序依赖于数据,那将是有用的,但事实并非如此。

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

2 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:1)

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