【问题标题】:How to have branch specific variables in GIT and python如何在 GIT 和 python 中具有分支特定变量
【发布时间】:2020-10-31 14:51:45
【问题描述】:

我有 2 个不同的分支,mastertest。这些分支是精确的副本,除了数据库字符串对于 master 和 test 不同。每次我将测试 合并 到 master 时,master 中的数据库字符串都会被测试数据库字符串替换。

我听说过使用特定于分支的变量,所以我不需要担心数据库字符串在合并时会发生变化,因为 .env 变量会处理它。

请告诉我该怎么做。

【问题讨论】:

  • 您的环境变量存储在哪里?您应该能够有单独的文件来存储每个分支的环境变量。
  • 我还没有制作 env 文件。 @adamgy
  • 这听起来你不需要单独的分支,但可以从某些环境特定的配置中读取数据库字符串。这样可以避免任何合并问题。
  • 如何制作 env 文件并在代码中访问它们的值?可以举个例子吗?

标签: python git merge environment-variables git-branch


【解决方案1】:

因为 .env 变量会处理它。

您可以生成正确的 .env 文件。
并将当前的.env重命名为.env.master.env.test

在每个分支中,然后根据当前的执行环境,从其中一个文件中生成.env,其中包含正确的内容。

生成脚本将确定签出分支的名称:

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

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

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

.env.branch 文件相关联的smudge 脚本将通过查看右侧.env.branch 值文件中的值来生成(在git checkoutgit switch 上自动生成)实际.env 文件。
生成的实际.env 文件仍然被忽略(由.gitignore)。

在“git smudge/clean filter between branches”查看完整示例。

【讨论】:

    猜你喜欢
    • 2022-10-12
    • 2018-09-12
    • 2018-09-30
    • 2011-11-02
    • 2020-08-23
    • 2015-07-10
    • 2016-05-28
    • 1970-01-01
    • 2016-10-31
    相关资源
    最近更新 更多