2014-01-13 57 views
2

我試圖應用從某些git存儲庫生成的補丁。補丁上下文行看起來像這樣在應用git補丁時忽略上下文行中的空間差異

else if (o is Item) 

,並在我的代碼,它看起來像這樣

else if (o is Item) 

當我申請的補丁

$ git apply -v --check --directory=myroot --ignore-space-change --ignore-whitespace ../patches/0003-some-name.patch 

它說,

error: while searching for: 

和提供了不同的上下文塊只有在上面提到的空間中才會發生。當我用問題解決問題時,問題就消失了。有沒有辦法指定上下文行中的空格可以被忽略?

+0

不知道'git apply'是如何工作的,但是我會認爲忽略空白不適用於你的例子。如果你認爲它在忽略空格時使用了某種「標記化」,那麼第一行有7個「標記」,第二行有5個。你需要它來解析你所用的語言來識別這兩行在語法上是相同的。 – icabod

+0

我得出的結論是,使用git是不可能的。正如你所說的那樣,例如,「elseif」和「else if」在合併之後可能具有完全不同的含義和中斷功能之間沒有區別。 – Soteric

回答

0

只要我們討論的只是空白:git apply has the --ignore-whitespace option

當應用補丁,如果有必要忽略上下文行中的空白改變

這會幫助你。讀起來就像有人有像你一樣的問題之前:-)

如果它不只是在上下文行一個空白的問題,我通常使用git apply--reject選項:帥哥了可用於將應用,那些有問題存儲在與修補文件平行的.rej文件中。

+0

謝謝但--ignore-whitespace不起作用。使用--reject選項,我必須手動解決所有的修補程序。可能有必要將我和那個版本庫代碼轉換爲常用樣式,但首先我想知道git是否可以爲我處理它。 – Soteric

+0

最後我得出的結論是,使用git是不可能的。我使用「git apply」和 - 在這個答案中提到的--reject選項。 – Soteric