Можно просто постоянно определить другое расположение или привязки клавиш. Здесь:
Наиболее распространенный способ создать патч состоит в том, чтобы работать diff
команда или некоторое встроенное управление версиями diff
- как команда. Иногда, Вы просто сравниваете два файла, и Вы работаете diff
как это:
diff -u version_by_alice.txt version_by_bob.txt >alice_to_bob.patch
Затем Вы получаете патч, который содержит изменения для одного файла и не содержит имя файла вообще. При применении того патча необходимо указать, к какому файлу Вы хотите применить его:
patch <alice_to_bob.patch version2_by_alice.txt
Часто, Вы сравниваете две версии целого многофайлового проекта, содержавшегося в каталоге. Типичный вызов diff
похож на это:
diff -ru old_version new_version >some.patch
Затем патч содержит имена файлов, данные в строках заголовка как diff -ru old_version/dir/file new_version/dir/file
. Необходимо сказать patch
разделять префикс (old_version
или new_version
) от имени файла. Это что -p1
средства: лишите один уровень каталога.
Иногда, строки заголовка в патче содержат имя файла непосредственно без подхода. Это распространено с системами управления версиями; например, cvs diff
продолжает линии заголовка, которые похожи diff -r1.42 foo
. Затем нет никакого префикса для разделения, таким образом, необходимо указать -p0
.
В особом случае, когда нет никаких подкаталогов в деревьях, которые Вы сравниваете, нет -p
опция необходима: patch
отбросит всю часть каталога имен файлов. Но большую часть времени, Вам действительно нужно также -p0
или -p1
В зависимости от того, как был произведен патч.
От человека:
-pnum
или--strip=num
Разделите самый маленький префикс, содержащий наклонные черты продвижения цифры с каждого имени файла, найденного в файле исправления. Последовательность одной или нескольких смежных наклонных черт считается как единственная наклонная черта. Это управляет, как имена файлов, найденные в файле исправления, рассматривают, в случае, если Вы сохраняете свои файлы в другом каталоге, чем человек, который отослал патч. Например, предположение имени файла в файле исправления было:/u/howard/src/blurfl/blurfl.c
установка
-p0
дает все неизмененное имя файла,-p1
даетu/howard/src/blurfl/blurfl.c
без ведущей наклонной черты,
-p4
даетblurfl/blurfl.c
Разница в том, что число после -p
указывает количество компонентов пути, которые будут удалены.
Допустим, у нас есть путь / Барак / Обама
. Выполнение патча с аргументом -p0
будет обрабатывать путь как есть :
/Barack/Obama
Но мы можем обрезать путь во время исправления:
-p1
будет удалите корневую косую черту (обратите внимание, что теперь это будет просто Барак, без косой черты слева от него):
Barack/Obama
-p2
удалит Барака (и смежную правую косую черту):
Obama
Чтобы Подробно объясните «почему» этого патча
поведения, прочтите эту ветку .