2015-04-08 49 views
0

我在嘗試理解修補程序應用衝突的最常見原因。我可以認爲這是一個變化的不匹配情況,對嗎?例如,我有以下補丁:在修補程序應用中導致衝突

diff --git a/Gruntfile.js b/Gruntfile.js 
index d220f35..176c71a 100644 
--- a/Gruntfile.js 
+++ b/Gruntfile.js 
@@ -10,7 +10,7 @@ module.exports = function (grunt) { 
         src: ['index.less', '!**/components/**'], 
         dest: 'build/development/css', 
         ext: '.css', 
-      cleancss: true 
+      cleancss: false 
        } 
       ] 
      }, 

上面有3行上下文和3行上下文的變化。如果,當混帳適用的補丁而不是像這樣的第一環境信息行:

src: ['index.less', '!**/components/**'], 

是這樣的:

this_is_changed_context_line: ['index.less', '!**/components/**'], 

發生衝突。

回答

1

請參閱patch命令的文檔。通常,它使用行號來定位要修補的目標文件的正確部分。如果目標文件與給定上下文不匹配,則patch假定行號錯誤,並開始在文件中的其他位置搜索給定的上下文。如果失敗,它使用給定的「模糊因子」開始從上下文的開始和結束處刪除行,以查看是否可以使用簡化的上下文來查找匹配項。最終,它發現某處可以應用所給的改變,或者放棄。

+0

謝謝!所以基本上不匹配的上下文是補丁失敗的主要原因?也可以將修補程序應用於修補程序中指定的文件以外的其他修補程序? –

+0

這聽起來像你有一個非常具體的情況;也許你應該把這個細節放在一個新的問題上。 – chepner

+0

對,這裏[它是](http://stackoverflow.com/questions/29523354/specify-to-which-file-a-patch-should-apply)。 –