簡體   English   中英

Git 管理環境特定配置

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM