2015-10-14 32 views
0

場景:
對於每個分支,我使用的是不同的開發數據庫。原因是架構可能有所不同,具體取決於分支上的工作。
這是直截了當的,我只是改變了app.config中的連接字符串。
但是,這有問題,那些更改 - 當提交時 - 我執行合併時合併回父分支,有效覆蓋該父分支的app.config。
不過,我想在我的存儲庫中更改app.config,以便我可以簡單地簽出一個分支並擁有正確的app.config。所以,git update-index --assume-unchanged不是一個解決方案。合併時自動忽略一些更改

回答

0

此問題的解決方案是.gitignore。主機特定設置的環境不應該與源共享存儲庫。標準方法是將app.properties添加到.gitignore並且永不提交;取而代之的是app.properties.template,其中app.properties可以設置在特定環境中,或者app.properties.default從其中將讀取默認值。

+0

感謝您的回答,但絕對不會回答我的問題。正如我所說的,當我切換分支時,我自動希望切換這些設置。如果你知道一個沒有提交app.config的方法,那很好,但是交換機必須是自動的。 –

+0

好的,沒有得到完整的問題。恕我直言,最好的解決方案仍然是將模式外部化爲env變量或腳本,否則你可以通過將配置拆分成兩個文件'app.properties'和'schema.properties',在相應的分支中設置所需的模式,使應用程序從這兩個文件中讀取。這樣,您不必在分支之間切換時更改'schema.properties'。在進行合併時,您仍然必須格外小心此文件,以便正確的模式結束於正確的分支。 –

0

我有一個解決方案,但它不是自動的。部分可能是因爲git,但也因爲忽略這樣一個完整的文件不是正確的方法 - 如果你已經做了一些你想合併的app.config的其他變化呢?

讓我先看看我是否正確理解你的問題。你在一個分支上開發一些功能,當它完成時被合併到其他的「主」分支中。在完成此項開發時,您可以進行一些臨時更改,這些更改在完成時不應包括在內。具體來說,你可以在app.config中提到數據庫連接字符串,但是在一般情況下,它可以是任何類似額外的日誌記錄,跳過調用某些函數等。 您希望將所有內容都檢入並存儲在git中,以便沒有鬆散的末端與修改後的文件中未檢查

假設我的理解是正確的,這是我如何處理這個問題:雖然 發展我只需添加一個給定的前綴和/或後綴(比如====) 到這些提交的提交消息不應該合併, 然後在最後合併之前刪除那些提交。

所以,你最終得到一個提交歷史看起來做的時候像

* blah blah blah 
* ==== Remove extra extra logging again ==== 
* blah blah blah 
* ==== Extra extra logging ==== 
* blah blah blah 
* blah blah blah 
* ==== Extra logging ==== 
* ==== Skip calling whatever_function ==== 
* blah blah blah 
* ==== Change database connection string ==== 
* blah blah blah 

它是微不足道的,以消除那些暫時改變(這大概可以自動的)。你必須稍微改變你的工作流程,但好處是絕對值得的。

您也可以看到this answer我在那裏描述了相同的解決方案,並提供了一些更多的細節和截圖。