0

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

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

管理这个 git repo 的最干净的方法是什么,以便我在我碰巧正在处理的任何功能/错误分支或标签中都可以使用我的配置?

我目前的尝试包括保留一个配置分支离开 master,并重新设置它。这很快就会出现问题。一定会有更好的办法?

4

3 回答 3

0

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

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

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

  • 使用特殊的涂抹/清洁挂钩来应用您的配置更改(或从特殊的配置文件分支中获取它们)

  • 使用本地配置分支,将配置更改隔离在特殊分支上

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

于 2012-08-24T22:38:04.657 回答
0

可能最干净的方法是为您的工作维护两个分支 - 调用它们devtest. dev将是您在除配置文件之外的所有内容上所做的所有工作,并且将是您用来向上游提交更改的内容。test只会是您的配置文件,您可以根据个人喜好经常合并dev或变基test到最新的dev提交(我更喜欢变基,我自己),并且这个分支永远不会被推送到上游。

于 2012-08-22T14:27:49.077 回答
0

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

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

于 2012-08-22T12:26:32.660 回答