【问题标题】:How to track config files of submodules in Git?如何在 Git 中跟踪子模块的配置文件?
【发布时间】:2010-11-28 14:13:33
【问题描述】:

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

详情:

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

我也开始在 Git 中跟踪一个使用这个库的项目。现在进退两难了:

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

    李>
  • 据我了解,将所有内容作为一个大项目进行跟踪是个坏主意。

  • 如果我 跟踪库中的配置文件,如何避免将它们重置为默认值?我是否在工作项目中创建一个分支并每次都从 master 中提取?那么,如果我在其中编辑库和配置文件怎么办?这一定会导致合并冲突,不是吗?

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

【问题讨论】:

    标签: git version-control git-submodules


    【解决方案1】:

    当使用子模块时,你应该避免因为容器而进行任何修改(这里:使用lib的项目),因为它会在子模块的历史上创建一个新的修订。

    例如,对于 lib,有可能引用配置 template 文件,这些文件可以作为 :

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

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

    关于配置文件的其他更一般的建议可以在SO question 中找到。

    【讨论】:

      【解决方案2】:

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

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

      还是我错过了什么?

      【讨论】:

      • 酷!该死的,我还在像在 Windows 中那样单向思考!
      猜你喜欢
      • 2010-11-08
      • 2015-09-13
      • 2019-02-16
      • 2012-02-29
      • 2019-07-08
      • 2011-07-04
      • 2011-08-26
      相关资源
      最近更新 更多