Конспекти лекцій та Лабораторні роботи з дисципліни "Проєктний практикум" для IV курсу спеціальності 121 "Інженерія програмного забезпечення" ОКР "Фаховий молодший бакалавр" Херсонського політехнічного фахового коледжу Державного університету "Одеська політехніка"
Багато людей в якості одного з методів контролю версій застосовують копіювання файлів в окрему директорію (можливо навіть директорію з відміткою за часом, якщо вони достатньо розумні). Даний підхід є дуже поширеним завдяки його простоті, проте він, неймовірним чином, схильний до появи помилок. Можна легко забути в якій директорії ви знаходитеся і випадково змінити не той файл або скопіювати не ті файли, які ви хотіли.
Щоб справитися з цією проблемою, програмісти давно розробили локальні СКВ, що мають просту базу даних, яка зберігає всі зміни в файлах під контролем версій.
Централізована система контролю версій призначена для вирішення основної проблеми локальної системи контролю версій.
Для організації такої системи контролю версій використовується єдиний сервер, який містить всі версії файлів. Клієнти, звертаючись до цього сервера, отримують з цього централізованого сховища. Застосування централізованих систем контролю версій протягом багатьох років була стандартом. До них відносяться CVS, Subversion, Perforce.
Такими системами легко керувати через наявність єдиного сервера. Але при цьому наявність централізованого сервера призводить до виникнення єдиної точки відмови у вигляді цього самого сервера. У разі відключення цього сервера розробники не зможуть викачувати файли. Найгіршим сценарієм є фізичне знищення сервера (або виліт жорсткого диска), він призводить до втрату кодової бази.
Незважаючи на те, що мода на SVN пройшла, іноді спостерігається зворотний хід - перехід від Git’а до SVN’у. Справа в тому, що SVN дозволяє здійснювати селективний чекаут, який має на увазі викачування лише деяких файлів з сервера. Такий підхід набуває популярності при використанні монорепозіторіях, про які можна буде поговорити пізніше.
Переваги:
Недоліки:
До таких систем відносять Subversion, Concurrent Versions System, Team Foundation Server.
Для усунення єдиної точки відмови використовуються розподілені системи контролю версій. Вони мають на увазі, що клієнт викачає собі весь репозиторій цілком замість викачування конкретних цікавлять клієнта файлів. Якщо помре будь-яка копія сховища, то це не призведе до втрати кодової бази, оскільки вона може бути відновлена з комп’ютера будь-якого розробника. Кожна копія є повним бекапом даних.
Всі копії є рівноправним і можуть синхронізуватися між собою. Подібний підхід дуже нагадує (та й є) репликацией виду master-master.
До даного виду систем контролю версій відносяться Mercurial, Bazaar, Darcs і Git. Остання система контролю версій і буде розглянута нами далі більш детально.
Переваги:
Недоліки:
До розподілених систем відносять: Git, Mercurial, Bazaar, Monotone, Codeville, BitKeeper.