Що б не зіткнуться з проблемами і помилками злиття і поновлення на веб-серверах застосовують системи управління версіями, які полегшать розподілену розробку сайту
Як це працює
(Version Control System, VCS) системи управління версіями використовуються для контролю змін і можливості створення декількох версій розроблювального проекту. Під час розподіленої розробки вони допомагають систематизувати роботу з декількома версіями одних і тих же документів.
Всі зміни в проекті розміщуються в структурованому сховищі (репозиторії), за допомогою которго взаємодіють розробники. Репозиторій містить службові файли проекту - це проіндексовані і шифровані зміни. Крім того містить робочу версію проектів. Завдяки цьому всі розробники можуть отримувати різні версії документів зі сховищ, створювати свою гілку змін, фіксувати зміни (створювати ревізію), а також відкочувати робочу копію до будь-якої попередньої версії. Даний метод дозволяє забезпечити синхронізацію оновлень.
Як це використовується при супроводі сайту?
Стандартна схема підтримки веб-проекту виглядає наступним чином: розробники вносять зміни на web-сервер сайту, який в свою чергу переглядають користувачі. Якщо кілька розробників змінюють один і той же документ, то перше зміни буде стерто другим, і користувач отримає некоректну інформацію. Буде потрібно знайти попередні версії, щоб відкотити проект, і з'ясувати причину отриманого невідповідності.
Подібні конфлікти змін призводять до потреби створення складних правил зміни і заважає розподіленої роботі програмістів.
Рішенням даної проблеми є система контролю версій, причому для підтримки веб-сайтів найбільш ефективна та схема, при якій на веб-сервері знаходиться два сховища.
Перший репозиторій використовується для збору змін, що приходять від усіх розробників. Який містить гілку з основною версією сайту, master, і додаткових, наприклад, гілка розробки dev і гілка змін hotfix. Програмісти працюють з репозиторієм через VCS консоль і клієнти. Таким чином відбувається зв'язок розробників і проекту. У першому репозиторії немає робочих файлів сайту, тільки службові, що містять зміни.
Другий репозиторій містить тільки гілку master з робочим каталогом, де і запущений сайт. Репозиторій в автоматичному режимі застосовує зміни з основної гілки першого сховища при створенні версиии зміни і передає до нього ж всі свої зміни. Дане рішення для страховки, щоб каталог оновлювався в односторонньому порядку, а доступ програмістам до нього потрібно закрити.
Відбувається синхронізація і установка змін, сайт містить найсвіжішу версію. У разі проблем проект можна відкотити на засобами VCS на попередню версію.
Яку систему вибрати
В даний час існує безліч систем управління версіями. Хоча схема налаштування на веб-сайті описана в загальному випадку, щоб показати її універсальність, все-таки варто згадати про основні різновиди VCS.
Централізовані системи управління (наприклад, Subversion. CVS) припускають наявність єдиного сховища для всіх розробників, на якому зберігаються всі гілки проекту.
У розподілених системах (Git, Mercurial, Bazaar) історія змін зберігається в локальних сховищах розробників, і необхідні її фрагменти синхронізуються між собою через центральний репозиторій.
Для роботи з веб-проектами я рекомендую використовувати розподілені системи, так як в них набагато зручніше маніпулювати гілками розробки. Кожен програміст може створювати свою гілку в локальному сховищі, незавантажені центральний репозиторій. Крім того, завдяки розподіленої моделі в таких системах вище швидкість виконання операцій і рівень безпеки.
Другий репозиторій містить тільки гілка master з робочим каталогом, з якого запущений сайт. Він автоматично завантажує зміни з основної гілки першого сховища при створенні ревізії і передає до нього ж всі свої зміни. Це зроблено для підстраховки, бо каталог оновлюється в односторонньому порядку, а доступ розробникам до нього слід закрити. Однак і незаряджена рушниця іноді стріляє.
Таким чином, відбувається синхронізація і установка оновлень, а сайт завжди містить найсвіжішу версію. У разі необхідності проект можна буде відкотити на попередній етап засобами VCS.
Яку систему вибрати
В даний час існує безліч систем управління версіями. Хоча схема налаштування на веб-сайті описана в загальному випадку, щоб показати її універсальність, все-таки варто згадати про основні різновиди VCS.
Централізовані системи управління (наприклад, Subversion, CVS) припускають наявність єдиного сховища для всіх розробників, на якому зберігаються всі гілки проекту.
У розподілених системах (Git, Mercurial, Bazaar) історія змін зберігається в локальних сховищах розробників, і необхідні її фрагменти синхронізуються між собою через центральний репозиторій.
Для роботи з веб-проектами я рекомендую використовувати розподілені системи, так як в них набагато зручніше маніпулювати гілками розробки. Кожен програміст може створювати свою гілку в локальному сховищі, незавантажені центральний репозиторій. Крім того, завдяки розподіленої моделі в таких системах вище швидкість виконання операцій і рівень безпеки.
Тепер необхідно розмежувати доступ для розробників засобами сервера і VCS.
Системи управління версіями дають більше свободи розробникам, зменшуючи залежність один від одного.
Налаштування завершено. Для перевірки необхідно створити ревізію в основний гілці першого сховища, і поновлення з'являться на сайті.
Переваги і нюанси
Давайте з вами зважимо гідності описаної нами схеми роботи:
> Виключення конфлікту злиття змін. Завдяки синхронізації сховищ не потрібні спеціальні правила для виконання оновлень.
> Розподілена розробка. Система управління версіями дозволяє використовувати розгалуження, тобто створення різних варіантів документа із загальною історією змін до точки розгалуження і з різними після неї. Коли гілка досягає стабільності, відбувається злиття. Паралельне виконання декількох завдань є особливо актуальним для сучасної веб-розробки, так як зазвичай при створенні і підтримці проекту точне планування неможливо.
> Збереження історії змін. Так як основна інформація про оновлення фіксується, і при необхідності є можливість однією командою відновити будь-яку з попередніх версій документа.
> Простота управління вихідним кодом. Засоби системи дозволяють порівнювати версії файлів через підрядник, контролюючи їх зміни.
> Простота інтеграції. Дану систему можна застосувати до запущеного сайту без закриття на обслуговування і переміщення файлів.
> Безкоштовне програмне забезпечення. Більшість систем управління версіями є вільно поширюваними
А що ж на іншій чаші ваг?
По-перше, необхідно продумувати і налаштовувати правила поновлення та розмежування, що втілюють описану схему. Залежно від величини проекту та вимог до безпеки може знадобитися додати ре-позіторіі для розробки.
По-друге, варто потурбуватися виділенням місця на сервері для репозиторіїв. Так як в них зберігаються всі змінювані файли, то при наявності великої кількості графіки на сайті переповнення може виявитися несподіваною проблемою, незважаючи на те що дані в сховищах містяться в стислому вигляді. В цьому випадку необхідно правильно налаштувати перевірку видалення старих гілок і змін.
Також, якщо ваш сайт використовує бази даних, може виникнути питання з контролем їх оновлень. Так як вихідний код таких файлів не є наочним, іноді має сенс використовувати функції збереження сценарію запитів до СУБД. Нарешті, не треба забувати про спеціалізовані продукти, службовців для розгортання та оновлення програм, наприклад, Capistrano. У деяких випадках краще скористатися ними.
• • •
Системи управління версіями дають більше свободи розробникам, зменшуючи залежність один від одного, і час, витрачений на розуміння їх функціонування, окупиться при подальшій розробці.
Про подібні системах можна говорити нескінченно, проте кращий спосіб оцінити зручність використання - це перевести на VCS свій сайт, як вже зробили багато відомих фірм.
Якщо Вам необхідна установка і налаштування систем контролю версій звертайтеся: [email protected]