2009-11-30 142 views
9

我們使用subversion,並在每次簽入期間,腳本創建一個包含所有diff的補丁文件。現在,對於相同的問題/缺陷,可能會有多個簽入,我們最終會得到多個補丁文件。現在看到一個問題的統一更改,所有的補丁文件必須合併。有沒有辦法做到這一點?如何合併多個補丁文件?

或者另一種方式來解決同樣的問題是:有沒有在顛覆一種方式來獲得的完成作爲特定註釋的一部分的所有更改合併差異?例如:

經過與評論:與評論簽到: 「123第一變化」
: 「123:第二組變化的」
經過與評論: 「123:第三變化」 ..

有沒有辦法得到所有發生的變化的組合差異,其評論的前綴是123?

回答

11

combinediffpatchutils可以結合的diff爲您服務。

(無恥地從this previous SO question借來的。)

+0

只有在應用第一個差異後第二個差異的上下文行保持有效時,Combinediff纔有效。因此,如果兩個差異都與相同的基線相反,並且它們觸及相鄰的線條,則某些更改將被拒絕。 – user833771 2016-05-12 07:05:45

+0

如何使用combinediff,我們可以在Windows上使用它嗎? – ashish 2017-04-12 12:00:04

+0

從http://cyberelk.net/tim/data/patchutils/stable/下載最新版本,解壓縮'./configure && make && make install',然後就可以運行'combinediff patch1 patch2'。 – erwaman 2017-09-06 22:24:46

3

創建一個新的分支正好位於第一變更之前,從修訂開始。 在新分支中,按順序合併問題的每個變更集。 在新分支開始和最終結果之間取差異。

(如果你做基於問題的分支,你會自動得到上述情況)。

Mercurial有一個很好的擴展來處理修補程序的集合,即mq extility。這反過來又以被子(http://savannah.nongnu.org/projects/quilt)爲基礎,該系統設計爲將補丁彼此堆疊起來。