Друпал, Друш И Свн

В нашем проекте мы используем svn для контроля версий.

Однако, как оказалось, подружить с ним Drupal — задача нетривиальная.

Пока мы не открыли для себя drush, нам приходилось тратить много телодвижений на обновление ядра и используемых модулей.

Drush — оболочка Drupal — Инструмент для администрирования Drupal из командной строки.

Страница проекта: http://drupal.org/project/drush .

Среди его возможностей — загрузка/обновление ядра и модулей, а также интеграция с системами контроля версий, в частности svn. Далее я приведу небольшой пример того, как drush используется для обновления компонентов Drupal и переноса этих обновлений в наш svn-репозиторий.

Итак, начнем.



Загрузка пустого проекта из репозитория

Загрузим наш пока пустой проект из репозитория svn в папку /home/user/workspace/drupal:

[user@drush ~]$cd /home/user/workspace/ [user@drush workspace]$ svn checkout xxx/bully/drush drupal --username=xxx --password=xxx



Подготовка структуры папок

При загрузке drush помещает ядро друпала в папку с именем drupal-x.xx, где x.xx — версия друпала, поэтому для удобства в будущем создадим папку www — в ней будет храниться код нашего проекта, и при обновлении мы будем использовать чужие символические ссылки.



[user@drush workspace]$ cd drupal [user@drush drupal]$ md www [user@drush drupal]$ ls -l total 4 drwxr-xr-x 2 user user 4096 2010-04-17 17:30 www/

Добавим созданную папку в репозиторий — это необходимо для корректной работы в дальнейшем.



[user@drush drupal]$ svn add www



Загрузка ядра

Например, давайте начнем работать с версией ядра 6.14, поэтому создадим символическую ссылку drupal-6.14 внутри папки Drupal для папки www:

[user@drush drupal]$ ln -s www drupal-6.14 [user@drush drupal]$ ls -l total 4 lrwxrwxrwx 1 user user 3 2010-04-17 17:33 drupal-6.14 -> www/ drwxr-xr-x 2 user user 4096 2010-04-17 17:30 www/

Добавьте созданную символическую ссылку в репозиторий svn:

[user@drush drupal]$ svn add drupal-6.14

Загружаем ядро:

[user@drush drupal]$ drush dl drupal-6.14 --svnsync Project drupal (6.14) downloaded to /home/user/workspace/drupal/drupal-6.14/.

[success] You should consider committing the new code to your Subversion repository. If this version becomes undesireable, use Subversion to roll back.

Команда dl предназначена для загрузки ядра или модулей.

Параметр --svnsync предназначен для автоматического обновления информации об изменениях в репозитории svn. Проверим как и что было загружено:

[user@drush drupal]$ ls -l total 4 lrwxrwxrwx 1 user user 3 2010-04-17 20:33 drupal-6.14 -> www/ drwxr-xr-x 10 user user 4096 2009-09-16 23:40 www/ [user@drush drupal]$ cd www [user@drush www]$ ls -l total 224 -rw-r--r-- 1 user user 43058 2009-09-16 23:34 CHANGELOG.txt -rw-r--r-- 1 user user 988 2009-09-14 16:50 COPYRIGHT.txt -rw-r--r-- 1 user user 262 2006-08-09 11:42 cron.php drwxr-xr-x 3 user user 4096 2010-04-17 20:35 includes/ -rw-r--r-- 1 user user 980 2007-12-26 11:46 index.php -rw-r--r-- 1 user user 1308 2007-11-19 22:53 INSTALL.mysql.txt -rw-r--r-- 1 user user 1075 2007-11-26 19:36 INSTALL.pgsql.txt -rw-r--r-- 1 user user 46926 2009-04-27 14:50 install.php -rw-r--r-- 1 user user 15646 2008-07-09 23:15 INSTALL.txt -rw-r--r-- 1 user user 18048 2009-01-06 20:27 LICENSE.txt -rw-r--r-- 1 user user 1924 2009-04-29 21:15 MAINTAINERS.txt drwxr-xr-x 4 user user 4096 2010-04-17 20:35 misc/ drwxr-xr-x 36 user user 4096 2010-04-17 20:35 modules/ drwxr-xr-x 4 user user 4096 2010-04-17 20:35 profiles/ -rw-r--r-- 1 user user 1590 2008-12-10 23:12 robots.txt drwxr-xr-x 3 user user 4096 2010-04-17 20:35 scripts/ drwxr-xr-x 5 user user 4096 2010-04-17 20:35 sites/ drwxr-xr-x 8 user user 4096 2010-04-17 20:35 themes/ -rw-r--r-- 1 user user 25457 2009-03-30 15:15 update.php -rw-r--r-- 1 user user 5002 2008-01-04 19:15 UPGRADE.txt -rw-r--r-- 1 user user 352 2005-12-10 22:26 xmlrpc.php [user@drush www]$

Видим, что все что нужно и правильно загрузилось.

Давайте проверим информацию для репозитория svn:

[user@drush www]$ cd .

[user@drush drupal]$ svn status A www A www/profiles A www/profiles/default A www/profiles/default/default.profile A www/INSTALL.txt A www/themes .

A www/modules/user/user-profile-item.tpl.php A www/modules/user/user.admin.inc A www/update.php A www/INSTALL.pgsql.txt A www/.

htaccess A drupal-6.14 [user@drush drupal]$

Мы видим, что и здесь все в порядке.



Загрузка модулей

Для загрузки модулей создадим папку модулей и добавим ее в репозиторий — это необходимо для корректной работы в дальнейшем.



[user@drush all]$ cd /home/user/workspace/drupal/www/sites/all [user@drush all]$ md modules [user@drush all]$ svn add modules

Собственно загружаем нужные нам модули:

[user@drush all]$ drush dl views cck context --svnsync Project views (6.x-2.10) downloaded to [success] /home/user/workspace/drupal/www/sites/all/modules/views. You should consider committing the new code to your Subversion repository. If this version becomes undesireable, use Subversion to roll back. Project cck (6.x-2.6) downloaded to /home/user/workspace/drupal/www/sites/all/modules/cck. [success] You should consider committing the new code to your Subversion repository. If this version becomes undesireable, use Subversion to roll back. Project context (6.x-2.0-beta7) downloaded to [success] /home/user/workspace/drupal/www/sites/all/modules/context. You should consider committing the new code to your Subversion repository. If this version becomes undesireable, use Subversion to roll back.

Как видите, модули загружены и информация для svn-репозитория обновлена.

Красота!

Обновление ядра

С версии 6.14 утекло много воды, найдено много ошибок, так что пришло время обновиться до 6.16. Коммиты предыдущих примеров я опускаю в репозиторий, поэтому перейдем к самому интересному.

Давайте создадим символическую ссылку drupal-6.16 внутри папки Drupal для папки www:

[user@drush www]$ cd /home/user/workspace/drupal/ [user@drush drupal]$ ln -s www drupal-6.16 [user@drush drupal]$ svn add drupal-6.16

Скачаем последнюю (на момент написания статьи) версию ядра:

[user@drush drupal]$ drush dl drupal-6.16 --svnsync Project drupal (6.16) downloaded to /home/user/workspace/drupal/drupal-6.16/.

[success] You should consider committing the new code to your Subversion repository. If this version becomes undesireable, use Subversion to roll back.

Вот и все!

Вместо заключения

Drush — незаменимый инструмент для администраторов и разработчиков, который позволяет быстро и удобно управлять веб-сайтами по всему ландшафту проекта.

Теги: #drupal #Drush #svn #drupal

Вместе с данным постом часто просматривают: