Зазвичай, коли виходить оновлення TYPO3, адміністратор повинен завантажити файли, а потім розпакувати їх на сервері. Цей посібник пояснює альтернативне рішення, котре використовує Subversion для цієї задачі.
Для кого цей посібник?
Цей посібник пояснює, як підтримувати встановлені копії TYPO3 оновленими за допомогою простих команд Subversion. Вона написана для адміністраторів серверів, які хочуть використовувати більш гнучкий спосіб оновлення своїх TYPO3 проектів.
Що таке Subversion?
Subversion це система контролю версій. Вона використовується розробниками для підтримки вихідного коду, що дозволяє зберігати всі зміни в файлах проектів.
Докладну інформацію про Subversion можна прочитати на сторінках Wikipedia:
http://en.wikipedia.org/wiki/Apache_Subversion
Використання Subversion для підтримки TYPO3
Команда TYPO3 core використовує Subversion не тільки для зберігання версійності їх розробок. Вони також створюють гілки та теги для кожного релізу TYPO3. Це значить, що коли TYPO3 4.3.4 вийшла, увесь вміст гілки і тегу TYPO3 4.3 Subversion було створено з точно таким же вмістом.
Раніше, для оновлення TYPO3 на веб сайті, адміністратори мали зробити наступні кроки:
- Завантажити архів релізу (.tar.gz або .zip файл)
- Скопіювати файл на сервер
- Розпакувати файли на сервері
- Замінити стару версію (заміною папки, або символічного посилання)
(Я пропущу частину про Install Tool, тому що адміністрування релізу не буде потрібно – поглянь http://typo3.org/teams/core/resources/release-workflow/ для ознацомлення з детальною інформацією про робочий процес релізу)
Тепер використовуючи Subversion, всі ці дії можуть бути замінені однією простою командою:
svn update
(Це простий приклад. Він працює, але команди котрі ви можете для цього використовувати можуть бути й іншими. Полистайте документ щоб дізнатися, що саме потрібно для початку).
Як бачите, це дуже проста команда, що дає вам досить багато переваг:
Переваги використання Subversion
- Швидке та просте оновлення до будь-якого релізу.
- Без ризику. Хоч Subversion, головним чином, використовується як інструмент для розробників, теги є не менш стабільними, ніж версії релізу. Насправді вони теж саме, що й релізи - побудовані на основі того ж джерела.
- (TYPO3 розробляється на різних гілках. Pозробка нових функцій відбувається на окремій гілці, що називається “trunk”. В гілках, однак, містяться тільки багфікси котрі пройшли процес перегляду).
- Доступ до останніх змін розробки TYPO3 завжди відкритий і може бути отриманий будь-ким, навіть перед виходом нового релізу. Наприклад, якщо ви повідомили про помилку, і розробник відповів, що вона була виправлена в Subversion, ви вже можете оновити свій репозиторій і не потрібно чекати на випуск нової версії.
- Зберігання локальних змін. Subversion може сказати вам, якщо були зроблені будь-які модифікації з вихідним кодом, і вони будуть збережені під час оновлення на новий реліз TYPO3. Майте на увазі, що абсолютно не рекомендується змінювати вихідний код TYPO3. Робіть зміни коду лише якщо розумієте, що робите. Можливо відбудуться конфлікти під час оновлення репозиторію, і хоч їх легко вирішити, я не закликаю робити зміни коду, коли пишу це тут... :-)
- Доступ до старих версій релізів. З Subversion ви можете легко перемкнутись на стару версію ревізії. Наприклад, якщо ви помітили критичні зміни в новій версії, ви можете легко повернутися до використання попереднього релізу.
Недоліки використання Subversion
- Клієнт Subversion має бути встановлено. Веб сервер мусить мати встановлений Subversion.
- Server мусить мати доступ до мережі інтернет. Це може здаватись тупим але веб сервер може бути підключено до інтернету через проксі. Підключатися через проксі можливо, але пояснення як це зробити виходить за рамки цієї статті. Зверніться до Subversion FAQ для отримання додаткової інформації про це.
- Потрібний 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/
Оберіть потрібну версію (дивись доповнення, правила іменування) и перевірте її (checkout). Останній параметр визначає ім'я директорії звідки буде взятий вміст:
> 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.
Оновитися до останньої версії
Як тільки ви отримали повідомлення що вийшла нова версія, ви можете перейти на неї. Перед тим як ви це зробите, вам потрібно дізнатись яку гілку чи тег ви зараз використовуєте, і, можливо, чи були зроблені якісь зміни в коді:
> cd /var/www/www.example.com/typo3_src/
> svn info
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.
Додаткова література
- Сайт проекту Subversion: http://subversion.apache.org/
- Стаття на Wikipedia: http://en.wikipedia.org/wiki/Apache_Subversion
- Subversion FAQ: http://subversion.apache.org/faq.html