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

01 Май 2008
Опубликовано VladSavitsky
Задача: 

Задача

Применить заплату (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

Unix и Linux

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

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

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

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

patch -p0 -R < path/file.patch

или
patch -R < file.patch

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

Windows

  • Скачать программу PATCH: http://gnuwin32.sourceforge.net/packages/patch.htm
  • Устанавить (запустить Setup).
  • Зайти в папку установки и найти в папке bin программу patch.exe.
  • Скопировать patch.exe в папку с патчем и исходными файлами.
  • Запустить patch.exe - откроется терминальное окно.
  • Нажать CTRL+C - выпадаете в консоль: C:\patch>
  • Выполнить команду:
    patch.exe --binary -p0 < SA-CORE-2009-009-6.14.patch

    Вместо SA-CORE-2009-009-6.14.patch нужно указать имя файла вашего патча.

Вывод

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

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

Как применить патч Drupal - применение патча под Windows

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

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

Комментарии

Предлагаю свой вариант применения патча для Drupal: http://kudryashovda.ru/content/kak-primenit-patch-drupal
Можно сюда добавить

KudryashovDA | Фев 23rd, 2010 в 11:32 после полудня

Добавил описание для работы в винде.

VladSavitsky | Фев 26th, 2010 в 2:18 утра
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>