2010-01-02 29 views
14

有沒有辦法將差異從一個單一的塊應用到文件?例如,說我這樣做,從文件A和B的一個diff,而產生的差異三個組塊,每一樣東西......表示如何從一個差異只補丁一個特定的大塊

@@ -971,30 +977,28 @@ 

...(在統一 diff文件的情況下) 。然後,我希望能夠將該diff添加到stdin中,並要求修補程序僅適用於笨重的N.

手動方法將剪切粘貼有趣的hunk,但我沒有一種解決方案。

+0

在我以前的經驗中,將上下文差異讀入編輯器並修剪它並不是很困難。我並沒有真正看到複雜的參數結構對修補程序的優點。你有沒有特別想要做的事情,這使得這個棘手的問題? – bmargulies 2010-01-02 03:55:08

+0

讓我們以這種方式 - 如果補丁*確實支持它 - 我會*使用它。我有一些刪除diff語法的vim宏,所以它不是太糟糕,但只鍵入一個命令會更容易。 – Cyrus 2010-01-02 04:08:38

回答

0

一些GUI差異/補丁工具有一種方法來選擇塊甚至單獨的行。我知道TortoiseSVN的TortoiseDiff可以這樣工作。我想我已經見過這樣做了,但是我不得不使用它已經有一段時間了。

至於命令行工具,我還沒有看到任何東西,會做你的要求。

+0

我在手冊頁中找不到任何東西,但覺得它一定存在 - 而且只是我無法找到它。所以 - 補丁本身沒有本地支持 - 是否準確? – Cyrus 2010-01-02 03:52:06

7

filterdiff可能的幫助。

它可以選配多種需求的補丁集的提取,從一個/多個補丁文件。例如,在這裏我們從文件中unified_diff.patch提取,匹配one_file.c,只有行950到原始文件的1050適用於具有名稱的文件的補丁:

filterdiff -i *one_file.c --lines=950,1050 unified_diff.patch 

要提取帥哥的特定/區間:

filterdiff --hunks=1,3,5-8,15 file.patch 

從郵件中提取補丁:

filterdiff message-with-diff-in-the-body > file.patch 

+0

不錯,非常好用。 – Nelson 2017-06-29 19:05:50

相關問題