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