下游git回购,配置

下游git回购,配置,git,Git,我有一个开源项目,我已经分叉了,因为我希望贡献回补丁和功能。到目前为止,一切顺利 这个项目有一个特定于我的文件configuration.h。我希望保持版本控制。默认文件的版本已由项目控制。我知道有更好的方法来管理配置,但不幸的是,我必须以适合向上游推送的方式保存这些文件 管理这个git repo的最干净的方法是什么,这样我就可以在我正在处理的任何特性/错误分支或标记中使用我的配置 我当前的尝试包括保持配置分支远离主节点,并重新设置其基址。这很快就会产生问题。一定有更好的方法吗?有git解决方案

我有一个开源项目,我已经分叉了,因为我希望贡献回补丁和功能。到目前为止,一切顺利

这个项目有一个特定于我的文件configuration.h。我希望保持版本控制。默认文件的版本已由项目控制。我知道有更好的方法来管理配置,但不幸的是,我必须以适合向上游推送的方式保存这些文件

管理这个git repo的最干净的方法是什么,这样我就可以在我正在处理的任何特性/错误分支或标记中使用我的配置


我当前的尝试包括保持配置分支远离主节点,并重新设置其基址。这很快就会产生问题。一定有更好的方法吗?

有git解决方案,比如挂钩。其他的钩子可以做到,但这不是一个很好的解决方案,因为我认为你的问题不在这里


对于不同的开发人员,您不应该有不同的代码文件。您的代码库应该处理存储在代码库外部的配置文件中的不同配置,这些配置文件的默认模板版本为
.config.template
,并且每个模板的机器上都有一个自定义版本
.config
,但没有版本(由于.gitignore)但是在运行时被代码使用。

可能最干净的方法是为您的工作维护两个分支-称它们为
dev
test
dev
将是除配置文件之外的所有工作,并且是用于向上游提交更改的内容
test
将只是您的配置文件,您可以经常将
dev
合并到最新的
dev
提交上,具体取决于个人偏好(我更喜欢rebase,我自己),而且这个分支永远不会被推到上游。

推荐的方法是修改应用程序,以便将跟踪/未跟踪的配置存储在不同的文件中。有关一些方法,请参见。摘录:

  • 修改应用程序以在foo.conf之前查找foo.local.conf(或在之后加载foo.local.conf并使这些配置设置覆盖foo.conf,或从环境变量读取配置文件的名称)

  • 跟踪foo.sample.conf并让编译过程将其复制到foo.conf(如果不存在)

  • 使用特殊的涂抹/清理挂钩应用配置更改(或从特殊配置文件分支获取更改)

  • 用于隔离特殊分支上的配置更改

  • 在任何情况下都不应使用“假定不变”。它不能做你想做的或你认为它能做的。使用它只会以眼泪告终


该文件是在项目中跟踪的,还是通常被忽略?看起来很奇怪,他们会跟踪每个用户都会更改的配置文件。不幸的是,在这种情况下,有许多类似于dev的分支,并且您不能一直在测试中重新设置每个分支的位置。您必须重新设置基础,然后一直取消基础。凌乱的