在同一个repo中处理不同的配置文件版本

时间:2012-02-06 03:06:15

标签: git

我们有一个以git-flow(ish)类型方式设置的git仓库 - 我们有3个“主线”分支,开发,发布和生产。我们的工作流程就是新的代码片段进入dev,其周期为两周。一旦这两个星期结束,dev就会变成“发布”,此时它会被测试并且事情就会被修复,但是没有应用任何新功能。在此之后的两周,发布版本被部署,并成为生产分支,实际上并没有被触及(除了紧急带外修复的情况)

因此,我们在本地有3个版本的数据库来跟踪3个不同的分支。我们倾向于有很多模式流失,所以在dev分支中发生的变化很可能会破坏发布或生产中的变化。

问题是,如何在同一个git存储库中管理3组不同的配置文件?目前,我们正在做的是.gitignoring他们,并在每台机器上保留3个本地版本的代码库。然而,由于几个原因,这并不是很理想,如果我们可以拥有一个版本的repo并且只是在分支之间切换,那就太棒了。

我想我正在寻找一种方法来检查文件到分支,并让它保持在那里,但不能在主线分支的合并之间获取。因此,dev上可能有一个版本,一个版本在发布,第三个版本在master上,但每个版本都会与其他版本隔离。有点像.gitignore用于合并。

这甚至可能吗?有没有人遇到过这个? (不能相信我们是唯一的)你是如何解决的?

2 个答案:

答案 0 :(得分:1)

如果您正在谈论环境配置,您可以为dev.config,test.config,production.config等每个环境配置一个配置。可以在dev分支上对dev.config进行更改。一旦测试完毕,发布时间到了,发布中的测试/生产配置可以进行适当的更新和测试。为所有环境配置一个配置是没有意义的。

答案 1 :(得分:0)

Manojlds是对的:单独的配置文件是最好的(没有合并问题)。

最好将这些“值配置文件”与内容过滤器驱动程序结合使用,以便在结帐时自动生成(使用'smudge'脚本生成正确和最终(但未版本化)的配置文件。

有关详情,请参阅问题“Something like gitignore, but not gitignore”。