2012-08-22 49 views
0

我有一個開源項目,我已經分叉了,因爲我希望貢獻回修正和功能。到現在爲止還挺好。配置下游git回購

該項目有一個文件,配置文件,是特定於我。我希望保持版本化。默認文件已由項目版本化。我知道有更好的方法來管理配置,但不幸的是我必須保持這些文件的方式,使它們適合被推向上游。

管理這個git repo的最簡潔的方法是什麼,以便我可以在我碰巧正在處理的任何功能/錯誤分支或標記中使用我的配置?

我目前的嘗試涉及保持一個配置分支關閉主,並rebasing周圍。這很快就會出問題。一定會有更好的辦法?

+0

文件是在項目中跟蹤的,還是通常被忽略?似乎很奇怪,他們會跟蹤每個用戶更改的配置文件。 – Christopher

回答

0

有git解決方案,如smudge clean掛鉤。其他鉤子可以做到這一點,但這不是一個很好的解決方案,因爲我認爲你的問題不在這裏。

對於不同的開發人員,您不應該有不同的代碼文件。您的代碼庫應處理存儲在代碼庫之外的配置文件中的不同配置,這些配置文件的默認模板版本爲.config.template,並且每個機器的自定義版本.config未版本化(感謝.gitignore),但在代碼使用時跑。

0

也許最簡單的方法是爲您的工作維護兩個分支 - 稱它們爲devtestdev將是除了配置文件之外的所有工作,並且將用於向上遊提交更改。 test只會是你的配置文件,你可以經常合併dev或重訂test到最新dev提交,根據個人喜好(我寧願底墊中,我自己),以及該分支將永遠不會被上游推壓。

+0

不幸的是,在這種情況下,有許多類似於開發的分支,並且你無法在每個測試上重新貼裝。你必須重新佈局,然後再重新開始。亂。 – jhogendorn

0

推薦的方法是修改您的應用程序,以便跟蹤/未跟蹤的配置存儲在不同的文件中。有些方法參見https://gist.github.com/1423106。摘自:

  • 修改您的應用程序尋找foo.conf之前foo.local.conf(或之後加載foo.local.conf,並將這些配置設置將覆蓋foo.conf的,或者讀取配置的名稱來自環境變量的文件)。

  • 軌道foo.sample.conf,有你的編譯過程將其複製到foo.conf如果它不存在。

  • 使用特殊污跡/清潔鉤以應用配置更改(或把他們從一個特殊的配置文件分支)

  • 使用local configuration branches,你隔離在一個特殊分支配置更改

  • 下任何情況下你都不應該使用「假定不變」。它不會做你想做的或者你認爲它做的事。使用它只會以眼淚結束。