Покажу на примере как применять и создавать патчи для drupal
Применяем patch к модулю drupal
В октябре 2009 мне было необходимо применить три патча к модулю wysiwyg для его интеграции с ckeditor’ом. Тогда мне и пришлось разобраться с работой с патчами. Вот как это делается:
wget http://ftp.drupal.org/files/projects/wysiwyg-6.x-2.0.tar.gz tar xzf wysiwyg-6.x-2.0.tar.gz cd wysiwyg/ wget http://drupal.org/files/issues/wysiwyg-HEAD.ckeditor_0.patch wget http://drupal.org/files/issues/wysiwyg-HEAD.ckeditor-version.patch wget http://drupal.org/files/issues/ckeditor.inc_fixedlists.patch patch -p0 < wysiwyg-HEAD.ckeditor_0.patch patch -p0 < wysiwyg-HEAD.ckeditor-version.patch patch -d editors/ < ckeditor.inc_fixedlists.patch
Скачали и распаковали модуль, перешли в его папку, скачали туда три файла патчей, а затем применили каждый из них.
Рекомендую просмотреть файлы патчей
Если в первом или втором случае применения патча не указать -p0, то файлы создадуться не в "editors/", а сразу в корне.
В третьем случае применения патча мы указали -d editors/ потому что в патче не указан путь к файлу относительно папки модуля. Вобщем смотри тест патча.
Создаём patch различий двух папок и применяем его
Ситуация: мы изменили какой-то модуль и хотим создать патч. Я делал это с wysiwyg.
Я создал две папки:
wysiwyg-6.x-2.0/ - оригинал
wysiwyg_patched/ - исправленный оригинал
теперь находясь на одном уровне с этими двумя папками запускаем команду:
diff -uprN wysiwyg-6.x-2.0/ wysiwyg_patched/ > ~/wysiwyg-6.x-2.0_ckeditor_support_yas_v1.patch
и в итоге мы поличи наш патч. Чтобы затем его успешно применить к нашей оригинальной версии запускаем команду:
patch -p1 < ~/wysiwyg-6.x-2.0_ckeditor_support_yas_v1.patch