下游git repo with config

时间:2012-08-22 03:58:06

标签: git

我有一个我已经分叉的开源项目,因为我希望回馈修复和功能。到目前为止,非常好。

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

管理这个git repo的最简洁的方法是什么,以便我可以在我正在处理的任何功能/ bug分支或标记中使用我的配置?

我当前的尝试涉及将配置分支保持在主服务器之外,并重新定位它。这很快就会出现问题。必须有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

最简洁的方法可能是为您的工作维护两个分支 - 称他们为devtestdev将是您在除配置文件之外的所有工作上所做的全部工作,并且将用于向上游提交更改。 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在特殊分支上隔离配置更改

  • 在任何情况下都不应使用“假设不变”。它不会做你想要的或你认为它做的。使用它只会以泪流满面。