2012-06-06 71 views
0

我有兩個分支從樹幹分開維護一年,比如分支A和B.現在我不得不合併到另一個。我想要的是比較兩者中的變化,然後進行合併分支中的更改。在兩個分支合併差異

我以前使用過SVN合併,但是我理解它的方式是,它將「差異」應用到另一個分支。我不希望所有的差異 - 只有更新。

是否有可能在SVN中做到這一點?

謝謝。

回答

0

合併進行3路合併。這是一個標準算法,其工作原理是這樣的:

  • 找到最近的一個共同祖先,或簡稱修訂版。這是分支創建之前的版本或從一個版本合併到另一個版本的最後一個版本。
  • 對於'mine'(你已經簽出)相同的每一行爲'base',但'theirs'(合併的參數)不同,這一行用於'他們'。
  • 對於'theirs'中與'base'相同的每一行,都使用本地版本(包括它沒有從基地更改的情況)。
  • 對於「我的」和「他們的」都相同的每一行,使用該版本,不管「基本」是什麼。
  • 對於「基礎」,「我的」和「他們的」三種不同的每一行,都存在衝突,您必須手動解決它。

所以這適用於兩個分支的所有更改。如果雙方都做了同樣的改變,那麼它的應用就不是這樣。如果相同的代碼以不同的方式進行了更改,則會發生衝突,您必須解決該問題。而且你不會看到它來自哪一個特定的修訂,它們都被彙總在一起。

現在,如果這不是您想要的,另一個選項是手動列出要合併的修訂版。這將只應用在這些特定修訂中所做的更改,每次連續範圍(算法實際上是相同的,但基礎是選定範圍開始之前的修訂版)。這意味着你必須親自挑選你想要的改變。這種方法有兩個問題:這將是很多工作,你必須小心挑選所有需要做的更改,以使後面的工作。

現在你想要所有的「更新」的變化。你必須以計算機可以理解的方式來定義那些意思。而且您必須小心以上第二個問題—這些更改可能取決於對方,您也必須選擇依賴的更改。