我有一个我已经分叉的开源项目,因为我希望回馈修复和功能。到目前为止,非常好。
这个项目有一个特定于我的文件configuration.h。我希望保持版本。默认文件已由项目版本化。我知道有更好的方法来管理配置,但不幸的是我必须保持这些文件的方式使它们适合被推向上游。
管理这个git repo的最简洁的方法是什么,以便我可以在我正在处理的任何功能/ bug分支或标记中使用我的配置?
我当前的尝试涉及将配置分支保持在主服务器之外,并重新定位它。这很快就会出现问题。必须有更好的方法吗?
答案 0 :(得分:0)
有一些git解决方案,比如smudge clean挂钩。其他钩子可以做到这一点,但这不是一个很好的解决方案,因为我认为你的问题不在这里。
您不应该为不同的开发人员提供不同的代码文件。您的代码库应该处理存储在代码库外部的不同配置,这些配置文件具有版本化版本为.config.template
的默认模板,并且每个版本的计算机上都有自定义版本.config
,该版本没有版本化(感谢.gitignore但是在运行时由代码使用。
答案 1 :(得分:0)
最简洁的方法可能是为您的工作维护两个分支 - 称他们为dev
和test
。 dev
将是您在除配置文件之外的所有工作上所做的全部工作,并且将用于向上游提交更改。 test
只会是您的配置文件,您可以经常将dev
合并到test
或最终dev
提交到最新的{{1}}提交,具体取决于个人喜好(我更喜欢rebase,我自己),这个分支永远不会被推上游。
答案 2 :(得分:0)
建议的方法是修改您的应用程序,以便将跟踪/未跟踪的配置存储在不同的文件中。有些方法,请参阅https://gist.github.com/1423106。摘录:
修改您的应用程序以在foo.conf之前查找foo.local.conf(或之后加载foo.local.conf并使这些配置设置覆盖foo.conf,或者从中读取配置文件的名称环境变量)。
跟踪foo.sample.conf并让编译过程将其复制到foo.conf(如果不存在)。
使用特殊涂抹/干净挂钩来应用配置更改(或从特殊配置文件分支中获取)
使用local configuration branches在特殊分支上隔离配置更改
在任何情况下都不应使用“假设不变”。它不会做你想要的或你认为它做的。使用它只会以泪流满面。