gpt4 book ai didi

java - Git 管理环境特定配置

转载 作者:行者123 更新时间:2023-11-30 01:42:27 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

您不应该版本 config.properties ( git rm 是正确的),并且确实忽略它。
这样,在 merge 过程中就不会造成任何问题。

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

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

在每个分支中,您将生成 config.properties ,其中包含来自这些文件之一的正确值,具体取决于当前的执行环境。

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

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

这意味着您可以:

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

最后,您将(在 .gitattributes declaration 中)注册一个 content filter driver

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

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

请参阅“git smudge/clean filter between branches ”中的完整示例。

关于java - Git 管理环境特定配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59484603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com