
- •Системи керування версіями.
- •Базові поняття системи Subversion.
- •Рекомендована структура папок
- •Робота в системі Subversion
- •Налаштування Assembla
- •Знизу з’явиться елемент керування випадайка «Choose a role» де вкажіть значення “Member”, а потім натисніть на кнопку “Invite” нижче.
- •Адреса репозитарію
- •Встановлення клієнта Tortoise svn
- •Налаштування клієнта Tortoise svn
- •Робота з репозитарієм Додавання файлів та папок
- •Отримання останніх змін з сервера
- •Відправити зміни в існуючий файл на сервер
- •Що потрібно зберігати в Subversion, а що ні?
- •Додаткова інформація:
Автор |
Ревізія |
Нотатки |
Петро Сасник |
0.1 |
Створено початкову версію |
Contents
1. Системи керування версіями. 3
2. Базові поняття системи Subversion. 4
Рекомендована структура папок 5
3. Робота в системі Subversion 5
Налаштування Assembla 5
Адреса репозитарію 11
Встановлення клієнта Tortoise SVN 12
Налаштування клієнта Tortoise SVN 14
Робота з репозитарієм 15
Додавання файлів та папок 15
Отримання останніх змін з сервера 18
Відправити зміни в існуючий файл на сервер 18
Що потрібно зберігати в Subversion, а що ні? 20
4. Додаткова інформація: 20
Системи керування версіями.
Системи керування версіями – це спеціальне програмне забезпечення для керуваннями версіями документів. Документом може бути файл на диску чи запис в базі даних. Є безліч спеціалізованих систем контролю версіями, проте нас цікавитимуть саме системи орієнтовані на збереження вихідного коду програм.
Основними функціями систем контролю версій вихідного коду програм(SCM) iє:
- Надійне збереження всієї історії змін коду програм
- Можливість документування змін в системі
- Можливість отримання миттєво знімка(snapshot) системи на певний момент часу в минулому
Додатковими, але вже стандартними функціями є:
Можливість пошуку та навігації по історії, а також отримання різниці між двома чи кількома версіями
Додавання міток
Серед систем контролю версій вихідного коду програм виділяють два класи:
Централізовані системи(cvs, subversion, Perforce, etc.)
Розподілені системи(DVCS) (Git, Mercurial, etc.)
Як слідує з назви централізовані системи, вимагають наявності центрального вузла, сервера який зазвичай зберігає історію версій коду та синхронізує роботу клієнтів.
В децентралізованих системах такого авторизованого центру зазвичай немає, всі клієнти є рівними, тому в таких системах дещо складнішою є синхронізація змін між ними.
Для виконання лабораторних робіт було обрано систему контролю вихідним кодом Subversion як один з кращих зразків централізованої системи. В якості центрального вузла сервера який надаватимиме нам доступ до Subversion ми обрали сервіс компанії Assembla.
Базові поняття системи Subversion.
При роботі з системою контролю версій Subversion потрібно засвоїти ряд базових понять(для більш грунтовного ознайомлення зверніться до більше детального керівництва).
Отже які проблему намагається вирішити Subversion:
Колись в минулому я реалізував функцію НамалюватиТрикутник, але з певних причин мені довелося її видалити, зараз я хочу повернути її назад.
Я та мій товариш працюємо над спільним проектом з тими самими фалами, але на різних комп’ютерах, як нам гарантувати, що наші зміни сумісні і ми не затремо зміи один одного?
Subversion – вирішує ці проблеми ввівши центральне сховище, яке є спеціалізованою базою даних яка зберігає інформацію в вигляді дерева папок та файлів. Клієнти підключаються до сховища і читають та записують ці файли. Записуючи дані клієнт робить їх доступними для інших читаючи отримує інформацію від інших клієнтів. Відмінність від звичайної файлової системи полягає в тому що сховище крім надавання в типовому випадку останньої версії даних може повернути клієнту будь-яку збережену версію в минулому, а також всю історію змін(хто міняв, що міняв, в які файли було внесено зміни).
Subversion – дозволяє одночасне внесення змін в ті самі файли. Для цього клієнт отримує з сховища і створює локальне відображення файлів і папок сховища – робочу копію(working copy). Саме з робочою копією ми працюватимемо і вноситимемо зміни. Процес отримання робочої копії з сервера називається checkout. Коли ми завершуємо роботу ми відправляємо зміни назад на сервер commit. Якщо я з моїм колегою працюємо над одним документом ми можемо одночасно внести різні зміни. При відправці файлу на сервер(comit) той хто відправляє зміни останнім може отримати конфлікт(conflict), наприклад якщо зміни були внесені в тому самому файлі в тих самих рядках. Subversion намагається автоматично об’єднати зміни якщо вони знаходяться в різних рядках. Якщо зміни знаходяться в тому самому рядку в вас є можливість виправити конфлікти(resolve conflicts):
Прийняти чужі зміни (сервера) і відкинути ваші локальні зміни (accept theirs)
Прийняти ваші зміни і відкинути чужі(сервера) зміни (accept mine)
Редагувати зміни вручну(ви відкриваєте змінені файли в редакторі де вносите потрібні зміни), після чого позначаєте файл як виправлений(resolved).
З деякими файлами в бінарному форматі даних неможливо працювати за такої моделі, оскільки Subversion не може автоматично об’єднати зміни з різних клінтів. В такому випадку використовують модель з блокуванням/редагування/розблокування (model lock/edit/unlock). В такому випадку перед редагуванням ми позначаємо файл заблокованим(locked) після цього в даний файл ніхто крім вас не зможе вносити змін поки ви не розблокуєте його(unlock).