Использование Subversion для поддержки TYPO3

SubversionОбычно, когда выпускается обновление TYPO3, администраторы должны скачать файлы которые распакуют на своих серверах. Это руководство объясняет, альтернативное решение, которое использует Subversion для этой задачи.

Для кого это руководство?

Это руководство объясняет, как поддерживать установленные копии TYPO3 обновленными с помощью простых команд Subversion. Она написана для администраторов серверов, которые хотят использовать более гибкий способ обновить свои TYPO3 установки.

Что такое Subversion?

Subversion это система контроля версий. Она используется разработчикми для поддржки из исходного кода, позволяя хранить все изменения в файлах проектов. 

Подробную информация о Subversion можно прочесть на страницах Wikipedia:
http://en.wikipedia.org/wiki/Apache_Subversion

Использование Subversion для поддержки TYPO3

Команда TYPO3 core использует Subversion не только для хранения версионности их разработок. Они так же создают ветки и теги называемые so для каждого релиза TYPO3. Это значит, что когда TYPO3 4.3.4 была выпущена, все содержимое ветки и тега TYPO3 4.3 Subversion, были созданы с точно таким же содержимым.

Тепрерь для обновления TYPO3 на веб сайте пользователи должны сделать следующие шаги:

  1. Скачать архив релиза (любой .tar.gz или .zip файл)
  2. Скопировать файл на сервер
  3. Распаковать файлы на сервере
  4. Заменить старую версию (заменоц папки, или символической ссылки)

(Я пропущу часть о Install Tool, так как исправлении релиза не потребуется – смотри http://typo3.org/teams/core/resources/release-workflow/ для подробной информации о рабочем процессе релиза)

Теперь используя Subversion, все эти действия могут быть заменены одной простой командой:

svn update

(Это простой пример. Он работае но команда которую Вы можете использовать для этого может быть другой. Пролистайте документ что бы узнать что именно нужно для запуска.)

Как видите, это очень простой шаг который дает Вам довольно много хороших преимуществ:

Преимущества использования Subversion

  1. Быстрое обновление до новой версии, очень простое и быстрое.
  2. Без риска Хотя Subversion главным образом используется как инструмент разработчиков, теги не менее стабильные чем версии релиза. На самом деле они тоже самое что и релизы - построены из того же источника.
  3. (TYPO3 разрабатывается на различных ветках, и разработка новых функций происходит на отдельной ветке которая называется “trunk”. Ветки релизов, однако, содержатся только багфиксы которые прошли процес обзора.)
  4. Доступ к последним изменениям разработки TYPO3 всегда продолжатся, и доступ к изменениям может быть получен каждым, даже перед выходом нового релиза. На пример, если Вы сообщили об ошибке, и разработчик ответил что она была исправлена в Subversion, Вы уже можете обновить из репозитория и не нужно жратьпока будет выпущена новая версия.
  5. Сохранение локальных изменений. Subversion может сказать Вам если были сделаны любые модификации с исходным кодом TYPO3, и он будет сохранен во время обновления на новый релиз. Имейте ввиду что абсолютно не рекоммендуется изменять исходный код TYPO3. Делайте это лиш если понимаете что делаете. Возможно произойдут конфликты, и хотя их легко разрешить, я не призываю делать изменения кода описывая это здесь... :-)
  6. Доступ к старым версиям релизов. С Subversion Вы можете легко переключиться на старую версию ревизии. На пример, если Вы заметили критические изменения в новой версии, Вы можете легко вернуться к использованию предыдущего релиза.

Недостатки использования Subversion

  1. Клиент Subversion должен быть установлен. Вебсервер должен иметь установленный Subversion.
  2. Server должен иметь доступ к сети интернет. Это может звучать глупо но вебсервер может быть подключен к интернету через прокси. Подключаться через прокси возможно но обьяснение выходит за рамки этой статьи. Обратитесь к Subversion FAQ для получения подробной информации об этом.
  3. Требуется shell доступ. Для выполнения последовательности действий описаних тут потребуется доступ к оболочке вебсервера. Административные привилегии не потребуются, разве что для установки программы Subversion.

Установка

Предварительные требования

Это руководство предназначено для серверов на Debian Lenny и использует командную строку клиента Subversion. Все описанное должно работать на другом сервере на котором установлен Subversion.

Вы можете проверить установлен ли Subversion выполнив следующую команду:

svn –version

Если не установлен, пользователи Debian и Ubuntu могут сделать это установив пакет “subversion”:

sudo apt-get -u install subversion

Подобно вебсерверу Subversion содержит серверную и клиентскую честь. Обе будут установлены этим пакетом. Так как для урока нужен только клиент, Вы можете пропустить большенство настроек. Клиент Subversion готов к использованию сразу после установки.

Использование

Первая проверка (checkout)

Для начала использования Subversion вам необходимо запустить checkout вашего проекта. Для этого откройте терминал и перейдите в директорию в которой вы хотите загрузить исходный код TYPO3:

cd /var/www/typo3/ 

Выберите нужную версию (смотри дополнение, правила именования) и проверьте ее. Последний параметр определяет имя директории откуда будет взято содержимое:

svn checkout https://svn.typo3.org/TYPO3v4/Core/tags/TYPO3_4-4-0 TYPO3_4-4.svn 

Замените симлинк на “typo3_src” указав скачанную директорию:

cd /var/www/www.example.com/
ls -l
drwxr-xr-x  10 example example 4096 Jan  1 12:01 fileadmin
lrwxrwxrwx   1 example example   15 Jan  1 12:01 t3lib -> typo3_src/t3lib
lrwxrwxrwx   1 example example   15 Jan  1 12:01 typo3 -> typo3_src/typo3
lrwxrwxrwx   1 example example   30 Jan  1 12:01 typo3_src -> /var/www/typo3/typo3_src-4.4.0
drwxr-xr-x   5 example example 4096 Jan  1 12:01 typo3conf
drwxr-xr-x  10 example example 4096 Jan  1 12:01 typo3temp
drwxr-xr-x  27 example example 4096 Jan  1 12:01 uploads
lrwxrwxrwx   1 example example   19 Jan  1 12:01 index.php -> typo3_src/index.php
rm typo3_src
ln -s ../typo3/TYPO3_4-4.svn typo3_src
ls -l

drwxr-xr-x  10 example example 4096 Jan  1 12:01 fileadmin 
lrwxrwxrwx   1 example example   15 Jan  1 12:01 t3lib -> typo3_src/t3lib
lrwxrwxrwx   1 example example   15 Jan  1 12:01 typo3 -> typo3_src/typo3
lrwxrwxrwx   1 example example   28 Jan  1 12:02 typo3_src -> /var/www/typo3/TYPO3_4-4.svn
drwxr-xr-x   5 example example 4096 Jan  1 12:01 typo3conf
drwxr-xr-x  10 example example 4096 Jan  1 12:01 typo3temp drwxr-xr-x  27 example example 4096 Jan  1 12:01 uploads
lrwxrwxrwx   1 example example   19 Jan  1 12:01 index.php -> typo3_src/index.php

И это все. Ваш сайт будет работать как раньше пока Вы используете ту же версию но теперь вы будете использовать репозиторий Subversion.

Обновиться до последней версии

Как только вы получили сообщенеи что вышла новая версия, Вы можете перейти на нее. Перед тем как вы это сделаете, вам возмодно узнать какую ветку или тег вы сейчас используете, и, возможно, были сделаны какие то изменения в коде:

svn info
cd /var/www/www.example.com/typo3_src/ 
Path: . 
URL: https://svn.typo3.org/TYPO3v4/Core/tags/TYPO3_4-4-0 Repository Root: 
https://svn.typo3.org/TYPO3v4/Core 
Repository UUID: 709f56b5-9817-0410-a4d7-c38de5d9e867 
Revision: 8465 Node Kind: directory 
Schedule: normal 
Last Changed Author: benni 
Last Changed Rev: 8047 
Last Changed Date: 2010-06-22 17:35:41 +0200 (Tue, 22 Jun 2010) 
svn status

Здесь соманда “svn info” покажет вам текущую ветку/тег, последнюю ревизию в этом дереве, и дату последнего обновления.

Команда “svn status” выведет список всех файлов которые былиизменены локально. Вывод этой команды должен быть пустым, как показано выше. Если вы видите любой вывод на экране, значит эти файлы были изменены. (Выполните “svn help status”, что бы разобраться что значат коды статусов. Можно использовать “svn diff”, что бы посмотреть изменения в формате diff.)

Как ранее было сказано, переключиться можно при помощи одной команды:

svn switch https://svn.typo3.org/TYPO3v4/Core/tags/TYPO3_4-4-1

Вывод этой команды выведет много изменений в формате этой строки:

U    tests/t3lib/t3lib_befuncTest.php 

(“U” значит, что файл был обновлен /updated/, “A” значит добавлен /added/, “D” удален /deleted/, и т.д. Смотрите “svn help update” для расширенного списка статусов.)

Когда переключение закончится, можно будет снова выполнить “svn info” и “svn status” для проверки результата.

Дополнительные возмодности

Можно также переключиться на ветки, где были сделаны теги. Такая возможность дает большую гибкость, т.к. доступ к еже не выпущенным обновлениям:

svn switch https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-4 

Процедура переключение на ветку такая же как и описанная выше.

На ветке, вы можете использовать команду “svn update” для переключения на старую ревизию, дату, или на текущую версию (которая включена по умолчанию):

svn update -r 8046 

Обновится на ревизию 8046 (это ревизия на которую ссылается TYPO3 4.4.0).

svn update -r {2010-06-23} 

Обновится на содержимое ревизии на дату 23 июля 2010 (день после того как была выпущена версия 4.4.0).

svn update -r 8431

Обновится на ревизию 8431 (это ревизия на которую ссылается тег TYPO3 4.4.1).

svn update -r HEAD 

Обновление до HEAD (“-r HEAD” можно не писать т.к. это будет выбрано по умолчанию). HEAD всегда текущее состояние ветки, и станет следующей версией как только менеджер релизов решит создать новый релиз... Таким образом, после анонса нового релиза, “svn update” на ветке TYPO3_4-4 (прроверяем командой “svn info”) дат вам почти тот же результат так если бы вы переключились на ветку. (тут “почти” потому что номер версии будет немедленно обновлен когда релиз произойдет. Вы заметите это только в заголовке окна браузера при работе в интерфейсе бэкэнда.)

Важно: Помните что команда “svn update” привеняется только к тому тегу или ветке на которій ві только что перешли. Если ві находитесь в tags/TYPO3_4-0-0 тогда HEAD и r8431, очевидно, не то же самое что HEAD в branches/TYPO3_4-4. Проверьте на какой ві ветке находитесь командой “svn info”.

Вы можете просмотреть весь репозиторий, чтобы увидеть все изменения, ревизии, теги и т.д. Обозреватель хранилища является частью сайта Forge: http://forge.typo3.org/projects/typo3v4-core/repository

Дополнение

Правила именования веток и тегов

Команда TYPO3 core поддерживает ветки для каждого major/minor релиза (4.2, 4.3, 4.4, и т.д.). Все изменения для релизов исправлений (4.2.1, 4.3.4, и т.д.) переданы к одной или нескольким из этих веток.

Для каждого релиза (4.3.0, 4.4.1, и т.д.) во время создания ветки создается тег, который является просто ссылкой на соответственную ветку:

https://svn.typo3.org/TYPO3v4/Core/

+ branches/
-- TYPO3_4-3/
-- TYPO3_4-4/
-- и т.д.
+ tags/
-- TYPO3_4-4-0/ (points to TYPO3_4-4 at revision 8046 from June 22, 2010)
-- TYPO3_4-4-1/ (points to TYPO3_4-4 at revision 8431 from July 28, 2010)
-- и т.д.
+ trunk/

Репозиторий Subversion TYPO3 содержат все обновления, теги и ветки с 2003 года, короче говоря со времени релиза TYPO3 3.6.0.

Дополнительная литература

  1. Сайт проекта Subversion: http://subversion.apache.org/
  2. Статья на Wikipedia: http://en.wikipedia.org/wiki/Apache_Subversion
  3. Subversion FAQ: http://subversion.apache.org/faq.html