Применение заплат (patch)

Авторы решений:
Версия Drupal:

Задача

Применить заплату (patch) с изменениями.


печать книг и изготовление альбомов это отдельное направление в деятельности нашей типографии. | торшеры напольные | сатиновое постельное белье

Решение

Варианты

  • Применение заплаты вручную
  • Использование patch

Применение заплаты вручную

Сделайте резервную копию файла, который будете изменять!

Откройте файл заплаты и в начале файла найдите 2, которые имеют примерно такой формат:

--- Sites/drupal/sites/all/modules/filter_default/filter_default.module 2007-09-12 15:58:16.000000000 -0500
+++ sites/drupal6/sites/all/modules/filter_default/filter_default.module 2008-04-25 17:18:29.000000000 -0500

Три минуса "---" означают, что это оригинальный файл, а три плюса "+++" - это результирующий файл. Таким образом, применив заплату к оригинальному файлы ("---") мы должны получить результирующий файл ("+++").

Каждый кусочек изменений имеет формат:

@@ -59,8 +66,8 @@ function theme_filter_default_admin_defa
   for ($i = 1; $i < count($roles)+1; $i++) {
     $row = array();
     $row[] = $i;
-    $row[] = drupal_render($form['role_'.$i]);
-    $row[] = drupal_render($form['format_'.$i]);
+    $row[] = drupal_render($form['role_'. $i]);
+    $row[] = drupal_render($form['format_'. $i]);
     $rows[] = $row;
   }

Как читать этот код:

  • @@ -59,8 +66,8 @@ function theme_filter_default_admin_defa - значит, что изменяются строки 59-66
  • "-" в начале строки означает, что строка должна быть удалена
  • "+" в начале строки - нужно добавить этот код
  • Остальные строки - контекст изменений

Остаётся только внести изменения в нужный файл...

Использование patch

Справка по программе patch (Unix): man patch

  • Cкопировать файл заплаты в то место, где он был создан (путь указан в первых двух строках файла заплатки).
  • Применить команду patch
    • из папки, где находится файл, который нужно изменить:
      patch -p0 < path/file.patch
    • из корня сайта:
      patch < file.patch

Отмена заплаты (патча)

Если после применения заплатки появились какие-то проблемы в работе движка, то можно откатиться назад используя команду:

patch -p0 -R < path/file.patch

или
patch -R < file.patch

в зависимости от того, какой командой вы патчили изначально.
Но лучше и проще восстановить из резервной копии.

Вывод

Применение заплаты вручную - это способ, который можно применить всегда, но он самый долгий и трудоёмкий.
Использование patch - быстрый способ, но для применения в Windows требует установки доп. программ.

Использованные материалы

Полезные ссылки

Creative Commons: ­Attribution-Share Alike 2.5

Данные материалы выложены под лицензией Creative Commons: ­Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons