Системи керування версіями

Системи керування версіями (Version Control System, VCS) – програмні інструменти, які допомагають розробникам керувати змінами в програмному коді з плином часу. Система відстежує всі зміни, які вносяться в код та зберігає їх в спеціальній базі даних. Кожна зміна зберігається як версія. При виявленні помилки розробник може повернутися назад і виконати порівняння з попередніми версіями коду та, за необхідністю, відмінити зміни. Також система дозволяє без побоювань експериментувати з кодом та зберігати найбільш вдалий результат.

Особливо такі системи є корисними при спільній роботі над проектом в команді. Наприклад, один розробник може працювати над новим функціоналом, а інший працювати над кодом в іншій частині проекту. Зміни, внесені в одну частину програмного забезпечення можуть бути несумісними зі змінами, внесеними іншим розробником. Система керування версіями відстежує зміни, внесені кожним учасником команди та допомагає виявляти конфлікти при паралельній роботі. 

Розробляти програмне забезпечення можна і без системи керування версіями, але такий підхід наражає проект на величезний ризик, тому програмне забезпечення для керування версіями є невід’ємною частиною повсякденної професійної практики сучасної команди розробників програмного забезпечення.

Типи систем керування версіями

  • локальні
  • централізовані
  • розподілені

Локальна система керування версіями – це локальна база даних, розташована на  особистому комп’ютері, в якій кожна зміна файлу зберігається як версія. Кожна версія містить лише зміни, внесені до файлу з моменту його останньої версії. 

Недоліком локальної системи керування версіями є складність або майже неможливість роботи над одним проектом в команді, бо необхідно працювати за одним комп’ютером.  

Також, якщо щось станеться з робочим комп’ютером, то всі файли проекту будуть втрачені.

Одним із прикладів таких систем є система керування версіями RCS, яка була розроблена у 1982 році (останнє оновлення було випущено у 2020 році). RCS поставляється з Linux’ом.

Централізовані системи керування версіями мають один сервер, який містить усі версії файлів, і кілька клієнтів можуть одночасно отримувати доступ до файлів на сервері, копіювати їх на свій локальний комп’ютер або надсилати зміни на сервер. Таким чином, клієнти можуть знати, чим займаються всі інші, а адміністратори можуть контролювати, хто що може робити. Це  дозволяє легко співпрацювати один з одним в команді. Протягом багатьох років це був стандарт для керування версіями. 

Централізована система також має певні недоліки. Якщо сервер вийде з ладу на деякий час, то протягом цього часу ніхто не зможе співпрацювати або зберігати нові версії. Якщо жорсткий диск, на якому знаходиться центральна база даних, пошкоджується, а резервні копії не зберігаються, то втрачається абсолютно все — вся історія проекту, крім окремих версій, які розробники мають на своїх локальних комп’ютерах.

До централізованих систем контролю версій відносять системи Subversion, Concurrent Versions System, Azure DevOps Server від Microsoft.

Розподілені системи керування версіями використовуються для подолання недоліків централізованої системи контролю версій. Клієнти повністю клонують сховище файлів проекту (репозиторій), включаючи його повну історію. Всі копії є рівноправними і можуть синхронізуватися між собою. Якщо сервер вийде з ладу, будь-яке із клієнтських сховищ можна скопіювати на сервер, що допоможе його відновити. Кожен клон є повною резервною копією всіх даних.

До цього виду систем керування версіями відносяться Mercurial та Git. Остання є  найбільш популярною системою керування версіями.

Система Git була розроблена в 2005 Лінусом Торвальдсом – розробником ядра операційної системи Linux. Система використовується безліччю професійних розробників програмного забезпечення. Вона чудово працює під управлінням різних операційних систем і може застосовуватися з безліччю інтегрованих середовищ розробки (IDE). Програма є безкоштовною і випущена під ліцензією GNU GPL версії 2.

Майже всі операції  з системою керування версіями відбуваються тільки з локальним репозиторієм на комп’ютері, де встановлена система. Для резервного зберігання версій проекту та спільної роботи в команді створюється віддалений репозиторій, який за необхідністю синхронізується з локальним. Послуги віддаленого зберігання  репозиторіїв надають спеціальні веб-сервіси.

Сервіси віддаленого зберігання репозиторіїв

Найпопулярнішими сервісами віддаленого зберігання репозиторіїв є  веб-сервіси GitHub, GitLab та Bitbucket.

Розглянемо коротку характеристику кожного сервісу.

GitHub – найбільше сховище коду, яке використовується організаціями як для приватного доступу, так і для спільної роботи з відкритим кодом. 

Цей сервіс був заснований у 2008 році американськими програмістами Крісом Ванстрасом (Chris Wanstrath), Томом Престон-Вернером (Thomas Preston-Werner) та Пі Джей Хайеттом (PJ Hyett).  У 2018 році компанію придбала корпорація Microsoft.

Спочатку проект передбачався як спільнота розробки відкритого вихідного коду, що використовує систему керування версіями Git. Засновники GitHub із самого початку позиціонували свій проект як соціальну мережу для програмістів: сервіс дозволив не лише публікувати власний код, а й коментувати чужі розробки, підписуватися на інших учасників та отримувати повідомлення.

У GitHub можна скопіювати будь-який опублікований репозиторій у свій профіль, щоб його модифікувати. Потім розробник може поділитися змінами із власником репозиторію за допомогою запиту на включення. Якщо власнику подобаються зміни, він може злити їх із початковим репозиторієм. Таким чином, підхід GitHub дозволив будь-якому зареєстрованому користувачу ділитися, покращувати або розвивати відкриті проекти.

На даний момент безкоштовна версія GitHub дозволяє розробникам працювати з публічними та приватними репозиторіями, робити внесок у них та співпрацювати. GitHub також має підтримку wiki – вбудований інструмент для створення та спільного використання документації версій, вбудований сервіс для створення та розміщення сайтів, підсвічування синтаксису більше ніж 200 мов програмування та безліч доповнень для підвищення продуктивності розробки та покращення співпраці.

Згідно з даними  компанії, GitHub користуються  більше 50 мільйонів користувачів. Ним користуються Microsoft, Facebook, Twitter, Google та інші великі корпорації. За популярністю цей сервіс є лідером.


GitLab – була заснована в 2011 році як альтернатива GitHub і BitBucket. Його головною перевагою є широка функціональність, яка поєднується з чудовим інтерфейсом користувача.

 Її заснував українець Дмитро Запорожець 2011 року. Харківський програміст тоді працював в IT-компанії Sphere Software, де часто використовував сервіс GitHub. Він не влаштовував Запорожця як із робочих причин, так і в плані вартості. Так у нього з’явилася ідея створити свій аналог.

Спочатку Запорожець працював над проектом вечорами і на вихідних, але 2013-го до нього приєднався голландський підприємець Сід Сібранджі. Зараз він відповідає в компанії за бізнес-складову (CEO), а Запорожець — за технічну частину (CTO).

Однією з відмінностей сервісу є можливість  встановлення системи на власних серверах. Також, серед розробників існує думка. що GitLab має більш широкі можливості по роботі з CI/CD порівняно з GitHub. CI/CD – це технологія автоматизації збірки, тестування та доставки нових версій додатків та сервісів кінцевому користувачу.

За офіційними даними компанії, систему використовують від 200 000 до 500 000 організацій, включаючи IBM, китайського гіганта електронної комерції Alibaba, японську Sony, Юліхський дослідницький центр, NASA, CERN, Invincea, видавництво O’Reilly, Обчислювальний центр Лейбніца (LRZ) і фонд GNOME, KDE.


Bitbucket – сервіс був запущений у 2008 році. Його створила австралійська команда, а пізніше придбала Atlassian у 2010 році. Спочатку сервіс підтримував тільки роботу з системою керування версіями Mercurial, однак у 2011 році почав підтримувати і систему Git. 

Головною перевагою Bitbucket є можливість розмістити необмежену кількість приватних сховищ для невеликих команд (1-5 користувачів). Однак спочатку інтерфейс користувача Bitbucket був не таким простим, як у GitHub, і функціональність була недостатньо розроблена. Однак зараз ці два сервіси стають все більш схожими – і популярність BitBucket зростає.

Основною відмінністю цієї платформи є її інтеграція з Jira – одним з найбільш популярних інструментів  для керування проектами в сфері розробки програмного забезпечення. В результаті розробники можуть легко відстежувати діяльність BitBucket в Jira, вимірювати їх продуктивність і підключати організаційні ради до спільних репозиторіїв. Це зручно, оскільки менеджери проекту можуть легко відстежувати організаційні та технологічні аспекти проекту. 

Також, як і GitLab, сервіс можна розгорнути на власному сервері.

BitBucket не публікує регулярну статистику кількості користувачів. За їхніми офіційними новинами, у 2019 році продуктом скористалися 10 мільйонів розробників.

Більш докладно про відмінності, переваги та недоліки розглянутих вище сервісів можна дізнатися за посиланням.


Використані джерела

  1. https://www.atlassian.com/ru/git/tutorials/what-is-version-control
  2. https://blog.eduonix.com/software-development/learn-three-types-version-control-systems/
  3. https://git-scm.com/book/uk/v2
  4. https://tagline.ru/version-control-systems-rating/
  5. https://usersnap.com/blog/gitlab-github/
  6. https://jelvix.com/blog/bitbucket-vs-github-vs-gitlab
  7. https://vc.ru/story/39311-github-platforma-dlya-velikih-prilozheniy

 

1+

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *