java - Git 管理环境特定配置

标签 java eclipse git git-fork

我需要为不同的环境(如开发、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/

相关文章:

java - Jersey 不适用于给定的提供商

javascript - 从两个动态下拉列表中选择值

java - 如何在JAVA中获取剪贴板中文件的绝对路径并获取粘贴位置

java - 在 JRE(1.8) 上运行 Java 项目时出现 "A fatal error has been detected by the Java Runtime Environment: "

git 错误 : RPC failed; HTTP 502 curl 22 The requested URL returned error: 502 Proxy Error

java - 保存和重新加载 Guava 布隆过滤器时出错 - 需要帮助查找代码中的任何错误

java - 我在哪里可以写项目的版本号?

android - Android中的分布式应用

git - 在其他提交之间删除提交

node.js - npm 错误!尝试安装 package.json 时,git dep 准备失败