下游git回购,配置
我有一个开源项目,我已经分叉了,因为我希望贡献回补丁和功能。到目前为止,一切顺利 这个项目有一个特定于我的文件configuration.h。我希望保持版本控制。默认文件的版本已由项目控制。我知道有更好的方法来管理配置,但不幸的是,我必须以适合向上游推送的方式保存这些文件 管理这个git repo的最干净的方法是什么,这样我就可以在我正在处理的任何特性/错误分支或标记中使用我的配置下游git回购,配置,git,Git,我有一个开源项目,我已经分叉了,因为我希望贡献回补丁和功能。到目前为止,一切顺利 这个项目有一个特定于我的文件configuration.h。我希望保持版本控制。默认文件的版本已由项目控制。我知道有更好的方法来管理配置,但不幸的是,我必须以适合向上游推送的方式保存这些文件 管理这个git repo的最干净的方法是什么,这样我就可以在我正在处理的任何特性/错误分支或标记中使用我的配置 我当前的尝试包括保持配置分支远离主节点,并重新设置其基址。这很快就会产生问题。一定有更好的方法吗?有git解决方案
我当前的尝试包括保持配置分支远离主节点,并重新设置其基址。这很快就会产生问题。一定有更好的方法吗?有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(如果不存在)
- 使用特殊的涂抹/清理挂钩应用配置更改(或从特殊配置文件分支获取更改)
- 用于隔离特殊分支上的配置更改
- 在任何情况下都不应使用“假定不变”。它不能做你想做的或你认为它能做的。使用它只会以眼泪告终