Pull to refresh

Drupal, drush & svn

Drupal
В своём проекте мы используем svn для контроля версий. Однако, как оказалось, «подружить» с ним drupal – нетривиальная задача.
Пока мы не открыли для себя drush, приходилось тратить много телодвижений для выполнения обновления ядра и используемых модулей.
Drush – drupal shell – Инструмент для администрирования 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'а в папку с именем drupal-x.xx, где x.xx – версия drupal'а, поэтому для удобства в дальнейшем создадим папку 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, поэтому создадим для папки www симлинк drupal-6.14 внутри папки drupal:

[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]$


Видим, что и тут всё в порядке.

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


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

[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 обновиться.
Коммиты предыдущих примеров в репозиторий я опускаю, сразу перейдём к самому интересному.
Создадим для папки www симлинк drupal-6.16 внутри папки drupal:

[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 – незаменимый инструмент для администраторов и разработчиков, который даёт возможность быстрого и удобного управления сайтами всего ландшафта проекта.
Tags:drupaldrushsvn
Hubs: Drupal
Total votes 9: ↑6 and ↓3 +3
Views2.1K

Comments 9

Only those users with full accounts are able to leave comments. Log in, please.
Administrator Linux.Basic
April 24, 202155,000 ₽OTUS
Факультет дизайна
April 26, 2021236,988 ₽GeekBrains
SEO-специалист
April 26, 202164,900 ₽Нетология
Node.js: серверный JavaScript
April 26, 202127,000 ₽Loftschool