Студент кафедри інформаційно-комп'ютерних технологій і фундаментальних дисциплін Гончар Є.Ю.

Київський національний університет технологій та дизайну

К.т.н., доцент кафедри комп'ютерних систем  Ланських Є.В.

Черкаський державний технологічний університет

Асистент кафедри інформаційно-комп'ютерних технологій і фундаментальних дисциплін  Скрипка Я.С.

 Київський національний університет технологій та дизайну

 

Дослідження систем управління версіями файлів для забезпечення електронної діяльності підприємства

 

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

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

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

Найпопулярнішою системою управління версіями даного типу є система RCS. В основі цієї системи лежить робота з наборами патчів змін ( патч – файл, що описують відмінність між файлами) які зберігаються в cпециальному форматі. Це дозволяє повторно компілювати будь-який файл на будь-який момент часу, послідовно накладаючи патчі.

З появою можливості одночасної роботи певної групи розробників над певними файлами виникла проблема необхідності одночасно відслідковувати зміни всіх розробників, які працюють на різних комп'ютерах які об'єднані в локальну мережу. Це призвело до того що почали створювати централізовані системи управління версіями (ЦСУВ). Основою такої системи служити центральний сервер, на якому зберігаються всі файли, в які вносяться зміни, і клієнтів, які отримують копії файлів з сервера.

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

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

Наступним кроком у розробці СУВ стала поява розподілених систем керування версіями. У разі, коли сервер виходить з ладу, будь клієнтський репозиторій може бути скопійований назад на сервер, щоб можна було відновити базу даних. Кожен раз, коли клієнт отримує останню версію файлів, створюється повна копія всіх даних.

У цих систем можна працювати з віддаленими репозиторіями, також можна одночасно працювати з різними групами розробників у рамках одного проекту. В одному проекті можна одночасно вести кілька типів робочих процесів.

Останнім часом найбільш поширеною є система керування версіями Git. На базі Git зручно створювати спеціалізовані системи контролю версій.

Git підтримує швидке розділення і злиття версій, включає інструменти для візуалізації та навігації по нелінійної історії розробки.

Git надає кожному розробнику локальну копію всієї історії розробки, зміни копіюються з одного репозиторію в іншій.

У кожного користувача Git, є свій локальний репозиторій, що дозволяє управляти версіями. Це дозволяє обмінюватися даними з іншими користувачами.

Також при роботі з Git створюється центральний репозиторій, з яким синхронізуються всі користувачі.

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

Література:

1. Richard E. Silverman. Git Pocket Guide. O'Reilly Media 2013.

2. Travis Swicegood. Pragmatic Guide to Git. Pragmatic Bookshelf 2010.

3. Jon Loeliger, Jon Loeliger. Version Control with Git: Powerful tools and techniques for collaborative software development. O'Reilly Media 2012.