[英]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.properties
( git 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.