我們使用git大多數我們建立在我們的商店的web應用程序,儘管應用程序本身使用多種技術(PHP,Rails的,等等),我們通常有一個分期和生產每個站點的服務器。通常,這些服務器具有不同的數據庫憑據集以及不同的基於環境的配置設置(例如緩存)。我們的工作流程通常涉及每個項目維護兩個git分支:反映生產服務器的master和反映分段的分段。新功能在分段(或子分支)上開發,並在完成和部署後合併回主。混帳:應用程序配置和不同的環境
我的問題是關於維護是科順和特定環境的配置文件的最好方法。我已經看到類似問題here和here的答案,但都沒有真正滿足。主要的兩種方法似乎是a)使用.gitignore排除將配置文件留在git的權限範圍之外,或者b)編寫反射的,環境感知的代碼,其確定例如根據主機名使用哪些數據庫憑證。我對a)的問題是它只允許一組配置文件存在於代碼庫中(不管當前分支),所以其他環境的配置文件會丟失。另一方面,b)似乎需要對代碼庫進行不必要的修改,這種方式與應用程序的功能無關。理想情況下,我想要一種方式來鎖定某個分支內的配置文件,這樣無論何時我簽出master,我都會得到master配置文件,並且每當我結帳時,就會得到配置文件。另外,將分段合併到主設備中不應以任何方式影響主配置文件。迄今爲止,我們已經通過在git根目錄之外包含特定於環境的配置文件的文件夾進行處理,並在部署時手動將相應的文件移動到代碼庫中,但這當然是不必要的破解(並且可能是危險的)。
有什麼辦法可以用git來完成這個任務嗎?
感謝您的考慮!
將http://stackoverflow.com/questions/2154948/how-can-i-track-system-specific-config-files-in-a-repo-project/2155355#2155355結合http:// stackoverflow .com/questions/3207575/how-do-i-open-source-my-rails-apps-without-giving-away-the-apps-secret-keys-and/3207608#3207608 help here? – VonC 2010-07-09 15:33:48