2013-04-02 58 views
3

我正在使用git/github來維護我的項目的PHP項目。我遵循一個簡單的分支模型(master,dev,hotfix-,feature-,release)。我的應用程序包含一個配置文件(config.php),我在其中定義版本號。最近,我不得不做一個修補程序。我從主服務器分支了修補程序分支,進行了更改,然後碰撞了該版本(例如:1.1.2到1.1.3)。當我將修補程序合併回主服務器時,我沒有任何問題。當我將修補程序分支合併到dev中時,我與版本號行中的配置文件發生了合併衝突。在我的開發分支中,我有不同的版本號,所以我認爲這是造成衝突的原因。我將來如何避免這種情況?我是否需要在不同的時間和/或分支碰撞版本?爲什麼碰撞版本時會發生合併衝突?

回答

2

不,你不能在合併時避免這種情況 - 對同一文件中同一行的兩次更改最終會發生衝突。

您是否考慮過使用櫻桃挑選來避免挑選版本凹凸?另一個選項不是硬編碼版本,而是從git自動派生它(例如,發佈分支獲取基於提交數量的數字並且修復分支基於分支名稱分支後綴)

+0

所以我想這會更容易做一些像'git describe --all> version.txt'這樣的東西,並且只是讀取該文件內容而不是對版本進行硬編碼?如果我繼續按照自己的方式行事,我想我會繼續遇到這個問題。 – Jeff

+0

是的,這也是很多人做的事情。 – ThiefMaster

3

您可以使用「我們的「或」他們的「戰略告訴如何自行解決衝突,但我不認爲你可以在特定的路線上使用這些策略。你可能想要避免開發者更新版本號,而是在git-hook上做。

谷歌搜索變成了這樣:http://cd34.com/blog/programming/using-git-to-generate-an-automatic-version-number/

編輯: 或者,你可以簡單地標記化的版本號,只是讓Git完全忽略它。你有部署過程用一些衍生版本號代替令牌 - 無論是增量式還是基於git SHA1或其他編號。

有趣的話題,我很快就需要爲我的團隊做些事情。

相關問題