2010-01-28 24 views
11

我有一個紅寶石項目,並且數據庫主機和端口在開發和生產上可能會有所不同。我需要一種方法爲這兩種環境的腳本獲取不同的值。如何跟蹤回購/項目中系統特定的配置文件?

該項目應該是完整的 - 所以應該有一些方法來指定默認值。我不希望克隆錯過配置文件。所以完全忽略它們是行不通的。

你如何用git解決這個問題?

+0

erm,保留一個分支並將'主'合併到'生產'和'開發'分支中?這可以通過topgit(可能是stgit)自動完成(半) – 2010-08-03 09:53:49

回答

19

我會建議使用:

  • 模板配置文件(代替主機和端口值與變量名的文件)
  • 能夠用適當的值取決於以取代那些變量名的腳本(通過腳本檢測)

Git解決方案然後是git attribute filter driver(另請參閱GitPro book)。

過濾器驅動程序由一個clean命令和命令smudge,其中任一個可以不指定的。
根據checkout,當指定smudge命令時,該命令從其標準輸入中輸入blob對象,其標準輸出用於更新工作樹文件。
同樣,clean命令用於在檢入時轉換工作文件的內容。

這樣一來,通過塗抹引用的腳本(使用Git管理)可以通過特定的environement值替換所有的變量,而乾淨的腳本將其內容還原到一個不變的配置文件。

clean smudge

當你簽上PROD環境使用Git的回購,塗抹過程中會產生所產生的工作樹刺狀的配置文件。

+0

看起來,GitPro書的鏈接指向了一個錯誤的地方。可能在當前版本中,章節號碼已經改變。 – jutky 2016-03-13 22:24:48

+0

@jutky謝謝。我已更新鏈接。 – VonC 2016-03-13 22:31:38