如何在Git中跟踪子模块的配置文件?

时间:2009-09-15 19:43:08

标签: git version-control git-submodules

在Git中,我如何组织工作来跟踪库的本地配置文件,这是一个git子模块?

详细信息:

该库具有被跟踪的普通文件,以及位于其文件夹中但未被跟踪的默认配置文件,以避免重置或覆盖它们(它们列在.gitignore中)。所有文件都在lib的文件夹或子文件夹中。

我开始在Git中跟踪其中一个使用此库的项目。现在有一个两难的境地:

  • 如果我将这个项目中的lib作为子模块,我将无法跟踪配置文件(Git将忽略它们,因为它们位于子模块文件夹中)。

  • 正如我所理解的那样,
  • 跟踪一切都是一个大项目是一个坏主意。

  • 如果我执行跟踪库中的配置文件,我该如何避免将它们重置为默认值?我是否在工作项目中分支并且每次都从主人那里拉出来?那么,如果我编辑库和配置文件呢?这必然会导致合并冲突,不是吗?

我想这不是新的,但我找不到任何建议。我很感激从你的经验中学习。

2 个答案:

答案 0 :(得分:4)

使用子模块时,应避免因容器(此处:使用lib的项目)进行任何修改,因为它将在子模块的历史记录上创建一个新修订。

例如,对于lib,可以引用可以作为基础的config 模板文件:

  • 默认值配置文件生成(lib有一个默认值文件存档,可用于生成完整但未跟踪的配置文件)
  • 或自定义配置文件生成(项目有自己的配置文件值,并使用它在lib中的同一位置生成非跟踪配置文件)

“配置文件模板中包含标记化值,以及将config.template文件转换为私有(并忽略)配置文件的脚本”是我在此SO question about merge management中建议的方法。

有关配置文件的其他更一般的建议,请参阅此SO question

答案 1 :(得分:2)

跟踪主项目目录中的配置文件,并将符号链接放入库子目录?

git add lib.conf
ln -s ../lib.conf lib/

还是我错过了什么?