Как «git-am» применить патч, созданный с помощью «git-format-patch --no-prefix»? - PullRequest
0 голосов
/ 03 января 2019

У меня есть причина¹ для создания моих git-коммитов в виде файлов патчей с использованием git-format-patch с опцией --no-prefix.

Этот параметр изменяет вывод исправления, чтобы не добавлять специфичные для git-diff префиксы a/ / b/ в пути к файлам в файлах исправлений. Это позволяет таким инструментам, как patch, применять файлы исправлений без необходимости передавать -p1 в качестве аргумента.

Пока все круто. Однако, похоже, что я больше не могу применять их с самим Git (git-am):

$ git am path/to/0001-patch.patch
Applying: <commit message subject>
error: <path>: does not exist in index
Patch failed at 0001
[...]

Как мне применить их с git-am сейчас, сохраняя при этом простую patch совместимость?

¹ Это позволяет мне использовать его в качестве файлов исправлений в Bazel без пользовательских команд исправлений, поскольку вам нужно будет применять исправления с помощью patch -p1 [...].

1 Ответ

0 голосов
/ 03 января 2019

git-am передает несколько параметров git-apply, включая параметр -p, который действует так же, как и для patch. Т.е. применять такие патчи с -p0:

git am -p0 path/to/0001-patch.patch

Было бы замечательно, если бы git-format-patch смог подсказать git-am во вспомогательных данных созданного файла исправления, чтобы он применял их без предположения префикса пути - точно так же, как он может подсказывать git-am с информацией о базовом дереве (см. опцию --base).

...