Lviv Software Developers Community (LSDC) - це спільнота, яка об'єднує програмістів міста Львова.
Обмін досвідом, корисні поради, спільна ініціатива та достовірна інформація з перших уст - все це дозволяє досягнути продуктивної взаємодії.
Lviv Software Developers Community
Вхід
Теги
DVCS. Чому варто використовувати розподілені системи контролю за версіями.
Розподіленість яка сьогодні окупувала всі простори інтернету(від соц-мереж та твіттероманії до т.зв. cloud-computing'у) торкнулася і систем контролю за версіями. Розподілені аналоги таких систем існували давно, але не користувалися великою популярністю. Попробую описати що воно таке і чому цим *треба* користуватися.
Сьогодні явним лідером в системах контролю версій є SVN - ним користувалися/користуються практично всі, тому кандидат на порівняння ідеальний. Про майкрософтівський VSS якщо і згадувати то тільки тут, в одному реченні, в виключно негативному контексті - детальніше не скажу бо забанять. Достатньо сказати, що у всіх дебатах на тему яку VCS використовувати, майкрософтівський варіант ніколи не фігурує.
SVN - VCS з широкою підтримкою всеможливих платформ, зручним інтерфейсом(як графічним так і текстовим) без будь-яких критичних помилок. То навіщо шукати щось краще?
SVN є жахливо повільним, я б навіть сказав програмою з одностороннім спілкуванням - ви кажете що покласти і більше ніколи не питайте її що ж ви туди поклали і які зміни відбулися з того часу.
SVN є дуже вразливим до проблем безпеки та збоїв заліза. Ви ніколи не можете знати чи хтось не підмінив файл на сервері або чи файл не був пошкоджений в результаті якогось збою.
У SVN великі проблеми з мерджанням бранчів.
І найголовніше SVN має жорстку систему дозволів. Ви мусите вирішувати хто має право коммітити. Якщо проект великий і відкритий то мусите тратити купу часу на розгрібання патчів від людей, що бажають допомогти.
Всі ці проблеми дуже легко вирішуються у контексті розподіленої VCS.
В даному пості я буду порівнювати з Git'ом оскільки тільки цю розподілену систему достатньо добре вивчив.
Використовуючи Git кожен учасник проекту отримує свій власний репозиторії і синхронізує його з іншими за власним бажанням.
Швидкодія - проблема відсутня оскільки немає джерела проблеми, для перегляду змін між довільними двома версіями, для переходу між бранчами чи для перегляду всієї історії змін абсолютно не потрібно під'єднуватися до інтернету. Більше того - фактично всі стандартні операції VCS проводяться у оффлайн режимі.
Безпека - кожна зміна в репозиторій маркується власним SHA1 хешем, що виключає будь-яку можливість підміни файлів. Сам факт децентралізації системи означає що вся історія змін в проекті завжди існує в багатьох копіях у кожного з учасників, що є надійним захистом від хардварних збоїв - ви завжди можете отримати останню копію вашого репозиторію у свого друге(точніше не останню копію а ту копію, яку ви синхронізували).
Бранчі в Git'i вражають простотою та функціональністю. Ви можете ділитися бранчами з друзями і спільно працювати над якоюсь експериментальною задачею, або ніколи не показувати своїх бранчів, використовуючи їх лише для організації виробничого процесу.
Проблема надавання доступу до репозиторію перетворюється на побудову мережі довіри(знову мережа :Е). Оскільки кожен учасник має свій власний репозиторій він може коммітати туди скільки йому завгодно, але вирішувати чи ці зміни достойні злитися з вашим репозиторієм маєте право тільки ви. Тому ви зливаєте лише зміни від людей яким довіряєте, в свою чергу ці люди зливають зміни своїх друзів і так далі.
Недоліки розподілених систем
1. Неможливість організувати нумерування версій. система Mercurial окрім SHA1 до кожного бранчу ліпить порядковий номер комміту і якийсь один бранч вибирається еталонним, але це швидше хак ніж реальне вирішення проблеми.
2. Неможливість проконтролювати доступ до проекту - розподілені системи найкраще підходять для розробки проектів з відкритим кодом.
детальніше про Git можна послухати і подивитися отут:
http://www.youtube.com/watch?v=4XpnKHJAok8
- kp веблог
- Увійдіть або зареєструйтесь, щоб отримати можливість надсилати коментарі.


Коментарі
класно, рекомендації з власного досвіду - найцінніші