В Drupal для решения ваших задач вы подбираете contributed модули. Отлично, если модуль поддерживается автором, в нем нет багов и есть нужный вам функционал. В противном случае, вы, возможно, правите модуль и используете его для себя.
Но, наверное, было бы здорово поделиться исправлениями и с другими? Для этого не обязательно начинать новый проект, можно лишь ограничиться публикацией патча.
Создание патча для модуля Drupal по шагам.
Для создания патча обычно пользуются командой git diff. Когда у вас уже готовы изменения модуля, выполняется следующее:
- Скачиваем оригинальный дистрибутив модуля;
- Распаковываем его в отдельную папку (не важно где, например в /tmp);
- Инициализируем в папке с ориг. модулем git — git init
- Добавляем все файлы модуля в текущий индекс — git add .
- Выполняем первый коммит, создавая данные с которыми будем потом сравнивать наши изменения — git commit -m «Initial commit»
- Теперь копируем модифицированные файлы модуля поверх оригинальных. Все готово для сравнения.
- Получаем сравнение в виде файла :
1 |
git diff --no-prefix > file.patch. |
После данных манипуляций вы получите file.patch, которым можно поделиться, к примеру, где то в обсуждениях модуля на drupal.org или на собственном сайте.
Как использовать/применить patch?
Нужно зайти в корень плагина (а также скопировать туда сам патч), который требуется пропатчить, и выполнить:
1 |
git apply -v -p0 file.patch |
Спасибо. Пригодилось.
Если так,
git diff —no-prefix > file.patch
то пишет:
fatal: неоднозначный аргумент «—no-prefix»: неизвестная редакция или не путь в рабочем каталоге.
Используйте «—» для отделения путей от редакций, вот так:
«git […] — […]»
git diff > file.patch — так вроде заработало.
Там автозамена превращала два дефиса в длинный дефис, переделал текст, спасибо, что обратили внимание.