В нашем проекте мы используем 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
-
Проприетарный Или Бесплатный
19 Oct, 24 -
Анонс Веб-Камеры В Стиле Стимпанк
19 Oct, 24 -
Состоялся Второй Форум Открытых Технологий
19 Oct, 24 -
Тебе Нравится Суп?
19 Oct, 24 -
Офзона 2.0
19 Oct, 24