Я пытаюсь применить патч, созданный из некоторого репозитория 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:
и предоставляет контекстный блок, который имеет происходит только в упомянутых выше пространствах. Когда я исправляю проблему с пробелами, проблема исчезает. Есть ли способ указать, что пробелы внутри контекстной строки можно игнорировать?
Не знаете, как работает 'git apply', но я бы подумал, что игнорирование пробелов не будет работать с вашим примером. Если вы предполагаете, что он использует какую-то «токенизацию» при игнорировании пробелов, то первая строка имеет 7 «токенов», а вторая - 5. Вам понадобится, чтобы каким-то образом проанализировать язык, который вы используете, чтобы распознать, что две строки синтаксически одинаковы. – icabod
Я пришел к выводу, что это невозможно с git. Как вы сказали, это не будет иметь разницы между, например, «elseif» и «else if», которые могут иметь совершенно другое значение и прерывать функциональность после слияния. – Soteric