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

发布于 2024-08-04 15:50:34 字数 512 浏览 6 评论 0原文

在 Git 中,如何组织工作来跟踪库(它是 git 子模块)的本地配置文件?

详细信息:

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

我也开始在 Git 中跟踪使用这个库的项目之一。现在有一个困境:

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

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

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

我想这并不新鲜,但我找不到任何建议。我很乐意向你们学习经验。

In Git, how can I organize work to track local config files of a library, which is a git submodule?

In details:

the library has normal files that are tracked, and default config files that are in it's folder, but not tracked, in order to avoid resetting or overwriting them (they're listed in .gitignore). All the files are in lib's folder or subfolders.

I started tracking one of the projects, that use this lib, in Git too. Now there's a dilemma:

  • if I make the lib in this project a submodule, I won't be able to track the config files (Git will ignore them, since they're in the submodule folder).

  • tracking everything as a big project is a bad idea, as I understand.

  • if I do track config files in the library, how can I avoid resetting them to default values? Do I make a branch in the working project and pull from master every time? Then, what if I edit the library and a config file in it? This must cause a merge conflict, doesn't it?

I guess this is not new, but I couldn't find any advice. I'll appreciate learning from your experience guys.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2024-08-11 15:50:34

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

例如,对于库,可以引用配置模板文件,这些文件可以作为以下功能的基础:

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

“配置文件模板”其中包含标记化值,以及将 config.template 文件转换为私有(并被忽略)配置文件的脚本”是我在此 关于合并管理的问题

有关配置文件的其他更一般的建议可以在此 所以问题

When using a submodule, you should avoid making any modification because of the container (here: the project using the lib), because it will create a new revision on the history of the submodule.

It would be possible, for instance, for the lib, to reference config template files that can be the base for :

  • default value config files generation (the lib has a default value file archived, which can be used to generate a complete but not tracked config file)
  • or a custom config file generation (the project has its own config file values, and use it to generate at the same place within the lib a non-tracked config file)

A "config file template with tokenized values in it, and a script transforming that config.template file into a private (and ignored) config file" is the approach I suggested in this SO question about merge management.

Other more general advices on config files can be found in this SO question.

酒绊 2024-08-11 15:50:34

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

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

或者我错过了什么?

track your config file in main project directory and put a symlink into library subdirectory?

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

or do I miss something?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文