2014-01-13 1 views
2

Я пытаюсь применить патч, созданный из некоторого репозитория git. контекст Patch линия выглядит следующим образомИгнорировать разницу в пространстве в контексте строки при применении git patch

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

Смежные вопросы