繁体   English   中英

Git 管理环境特定配置

[英]Git manage environment specific configuration

我需要为不同的环境(如 dev、uat 和生产)进行属性配置。 例如,一个 config.properties 具有和条目像environment=dev ,我需要将暂存分支更改为environment=uat并将主分支更改为environment=prd

我尝试分别在每个分支中提交这些文件,并尝试在 gitignore 中添加 config.properties 以便它不会在下次提交时考虑。 但是 git ignore 没有更新所以我运行了命令

git rm -rf --cached src/config.properties
git add src/config.properties
git commit -m ".gitignore fix"

但是此命令正在从本地存储库本身删除文件,并且正在进行的提交也从分支中删除。 我想像这样处理分支,以便 Jenkins 无需手动编辑配置文件即可进行部署。 我正在为 git UI 使用 fork。 有没有办法处理这种情况?

你不应该版本config.propertiesgit rm是正确的),并且确实忽略它。
这样,它在合并期间不会造成任何问题。

拥有三个单独的文件更容易,每个环境一个:

  • config.properties.dev
  • config.properties.uat
  • config.properties.prd

在每个分支中,您将根据当前的执行环境从这些文件之一生成config.properties ,其中包含正确的值。

由于每个环境都有单独的分支,其中包含正确的文件,因此您可以使用生成脚本来确定签出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

这意味着你可以:

  • 版本仅模板文件config.properties.<env>
  • 以分支命名的版本值文件: config.properties.dev , config.properties.uat ...:由于它们不同,因此在合并或切换分支时不存在合并问题。

最后,您将注册(在.gitattributes声明中)一个内容过滤器驱动程序

弄脏 (图片来自“ Customizing Git - Git Attributes ”,来自“ Pro Git book ”)

与模板文件 ( package.json.tpl ) 关联的smudge脚本将通过在正确的config.properties.<env>值文件中查看值来生成(在git checkout上自动生成)实际的config.properties文件。
生成的实际config.properties文件仍然被忽略(由.gitignore )。

请参阅“分支之间的 git smudge/clean filter ”中的完整示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM