18

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

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

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

4

2 回答 2

21

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

于 2009-05-28T02:21:39.673 回答
1

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

于 2009-11-30T07:39:36.567 回答