Apache Subversion (SVN) - централізована система управління версіями, тобто для зберігання всіх файлів і спільної роботи використовується центральний сервер (або ПК). Так що без додаткових хитрувань, без доступу до сервера розробка буде досить проблематичною.
Система вже багато років активно використовується в середовищі розробників, але через свою обсягом і функціональністю не всі користувачі знають повний набір функцій SVN, здатних полегшити їхнє життя.
Користуйтеся зовнішніми залежностями
SVN вміє вивантажувати робочі каталоги з різних каталогів одного або декількох сховищ. Система зіставляє локальні папки з віддаленими, причому, можна позначити необхідну версію або правку.
Для цього використовується властивість svn: externals. Команда виглядає приблизно так:
Є і більш зручний варіант. Потрібно створити файл, наприклад svn.externals. Його потрібно наповнити у вигляді:
# Таких компонентів може бути багато, причому, із зазначенням ревізії
Після цього потрібно встановити цей файл в якості джерела для зовнішніх залежностей:
# Властивість буде застосовано до поточної директорії
Тепер залишилося закомітіть і апдейтнуть робочі файли.
створення патчів
Якщо у вас немає доступу / дозволу на зміну головного сховища або просто немає сенсу Коміто поточні зміни, які все ж необхідно внести, можна застосувати патч.
По суті це текстовий файл, який містить всі внесені зміни. Щоб його створити необхідно перейти в корінь і виконати:
# Файл буде збережений в кореневому каталозі
А для застосування потрібно виконати:
# Патч буде застосований для кореневого каталогу
виключення файлів
Коли доводиться працювати з декількома проектами одночасно, директорії можуть засмітитися непотрібними файлами, які можуть знадобитися для викочування, але не потрібні в розробці. Щоб не викачувати зайві файли і папки, в svn їх можна просто виключити. Тобто, вони будуть лежати на головному репозиторії, але не будуть додаватися до робочих файлів під час виконання checkout і update.
Щоб виключити каталоги, потрібно виконати update з опціями --set-depth exclude.
# Директорії і файли видаляються тільки на комп'ютері клієнта
скасування змін
Так як в svn зберігаються всі дані про внесені зміни і повний лог розробки, то система дозволяє виправляти помилки і навіть відновлювати файли. Варіантів кілька.
У випадках, коли в робочу копію були внесені зміни, але щось не працює і потрібно повернутися до останньої робочої версії файлу або цілої директорії, є команда svn revert.
# Повернення робочої копії до останньої копії на репозиторії
Припустимо, що один з розробників вніс свої зміни, закомітіл їх, а потім дізнався, що його код, наприклад, виконує вже наявну функцію, причому, гірше. Тоді можна повернутися до потрібної версії. Робиться це так:
# Повернення з ревізії 7 на ревізію 6
Ще можна швидко відновити видалені файли і директорії.
# Відновлення копії з версією +1263
Об'єднання діапазону ревізій
Крім усього іншого, SVN вміє об'єднувати не тільки дві ревізії, а цілі діапазони. Реалізована функція дуже просто:
# Об'єднання директорій в includes / test /
Найголовніше
Subversion має великий інструментарій, який зачіпає більшість завдань стеження за версіями. А вивчення максимуму з можливостей системи спростить процес розробки і використання інструменту.