每个分支中的静态配置文件的git合并策略

时间:2014-12-27 06:27:48

标签: git merge config

我们需要一种系统的方法来忽略我们在git上维护的分支的特定配置文件。

即。我们有一个config.xml文件,其中包含数据库,环境和其他信息。和#'掌握'我们希望避免使用git merge'

的结果的分支机构。

我们遵循了关于合并策略的SCM书籍说明,但是当我们进行分支合并时,git似乎仍然合并config.xml
http://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Merge-Strategies

我也看过这篇SO帖子,要求有意识的程序员努力有选择地忽略config.xml文件 - 似乎修剪错误:
Different configs in each git branch

此SO帖子也解释了不同的git合并策略,除了ours之外,其他一些策略似乎都不符合我们的目的:
When would you use the different git merge strategies?

我很好奇你们使用什么方法来控制配置文件的更改,这些更改在每个分支中保持非常一致,而不需要git merge'搞砸了?

1 个答案:

答案 0 :(得分:2)

合并驱动程序的问题(如"我们的"策略)就像我在" .gitattributes & individual merge strategy for a file"中提到的那样:

  

合并驱动程序仅在非平凡情况下调用,即如果master和test都触及了setup(并且您需要首先定义合并驱动程序)。

我在" How do I tell git to always select my local version for conflicted merges on a specific file?"中使用了这样的策略,但它确实涉及两个分支的修改。

对于某些具有不同设置的文件,另一个选项是content filter driver,如" Keep settings in branch"

content filter driver

(图片显示在" Customizing Git - Git Attributes",来自" Pro Git book")

这允许您保持版本控制:

  • 设置文件本身的模板文件,其中包含占位符部分(如@@PORT@@
  • 一个脚本,可以获取模板文件并使用正确的值替换值占位符,具体取决于签出的分支或内容。
  • 多个值文件,以便为不同的上下文版本化正确的值 由于这些文件的命名方式不同,并且仅在各自的分支中进行了修改,因此它们不参与合并。