Система керування версіями (СКВ; source code management(SCM)[], revision control[], source control[], version control system[]) — програмний інструмент для керування версіями одиниці інформації: початкового коду програми, скрипту, вебсторінки, вебсайту, 3D-моделі, текстового документу тощо.
Система керування версіями — інструмент, який дозволяє одночасно, не заважаючи один одному, проводити роботу над груповими проєктами.
Системи керування версіями зазвичай використовуються при розробці програмного забезпечення для відстеження, документування та контролю над поступовими змінами в електронних документах: у сирцевому коді застосунків, кресленнях, електронних моделях та інших документах, над змінами яких одночасно працюють декілька людей.
Кожна версія позначається унікальною цифрою чи літерою, зміни документу занотовуються. Зазвичай також зберігаються дані про автора зробленої зміни та її час.
Інструменти для контролю версій входять до складу багатьох інтегрованих середовищ розробки.
Існують два основні типи систем керування версіями: з централізованим сховищем та розподіленим.
Система збереження історії редагувань статей, що застосовується у Вікіпедії є прикладом системи керування версіями.
Загальні відомості
Система контролю дозволяє зберігати попередні версії файлів та завантажувати їх за потребою. Вона зберігає повну інформацію про версію кожного з файлів, а також повну структуру проєкту на всіх стадіях розробки. Місце зберігання даних файлів називають репозиторієм. В середині кожного з репозиторіїв можуть бути створені паралельні лінії розробки — гілки.
Гілки зазвичай використовують для зберігання експериментальних, незавершених(alpha, beta) та повністю робочих версій проєкту(final).
Більшість систем контролю версії дозволяють кожному з об'єктів присвоювати теги, за допомогою яких можна формувати нові гілки та репозиторії.
Використання системи контролю версії є необхідним для роботи над великими проєктами, над якими одночасно працює велика кількість розробників. Системи контролю версії надають ряд додаткових можливостей:
- Можливість створення різних варіантів одного документу;
- Документування всіх змін (коли ким було змінено/додано, хто який рядок змінив);
- Реалізує функцію контролю доступу користувачів до файлів. Є можливість його обмеження;
- Дозволяє створювати документацію проєкту з поетапним записом змін в залежності від версії;
- Дозволяє давати пояснення до змін та документувати їх;
Невеликий словник основних термінів-сленгів
- Транк (trunk) — основна гілка коду
- Бранч (branch) — відгалуження
- Чекін (Check in (submit, commit)) — відправлення коду в репозиторій
- Чекаут (Check out) — одержання зміни з репозиторію
- Конфлікти — виникають, коли кілька людей правлять один і той же код, конфлікти можна вирішувати
- Патч — шматок з записаними змінами, які можна застосувати до сховища з кодом
Світовий досвід
На сьогодні у світі існує багато організацій, які використовують системи контролю версій у своїй повсякденній роботі. Практично кожна фірма, що виробляє програмне забезпечення використовує їх. Але крім комерційних організацій системи контролю версій використовуються в університетах у всьому світі. Так, наприклад, можна виділити статтю двох професорів університету в Торонто: Грегорі В. Вілсона і Карен Рейд. У своєму новому проєкті вони намагаються створити середовище для студентів, в якому вони хочуть використати системи контролю версій, issue trackers, web-логи.
Деякі університети прагнуть використовувати і створювати такі середовища, в яких усі студенти технічних спеціальностей змогли б мати систему контролю версій, web-логи та інше. У США департамент освіти також займається цим питанням. Впровадження подібних систем відбувається на державному рівні.
Види систем контролю версії
Централізовані системи контролю версій
Централізована система контролю версії (клієнт-серверна) — система, дані в якій зберігаються в єдиному «серверному» сховищі. Весь обмін файлами відбувається з використанням центрального сервера. Є можливість створення та роботи з локальними репозиторіями (робочими копіями).
Переваги:
- загальна нумерація версій;
- дані знаходяться на одному сервері;
- можлива реалізація функції блокування файлів;
- можливість керування доступом до файлів;
Недоліки:
- оновлення робочої копії та збереження змін можливе лише за наявності мережевого з'єднання з основним сервером.
До таких систем відносять Subversion, Concurrent Versions System, Team Foundation Server.
Розподілені системи контролю версії
Розподілена система контролю версії (англ. Distributed Version Control System, DVCS) — система, яка використовує замість моделі клієнт-сервер, розподілену модель зберігання файлів. Така система не потребує сервера, адже всі файли знаходяться на кожному з комп'ютерів.
Переваги:
- Кожний з розробників працює зі своїм власним репозиторієм;
- Рішення щодо злиття гілок приймається керівником проєкту;
- Немає потреби в мережевому з'єднанні;
Недоліки:
- не можливо контролювати доступ до файлів;
- відсутня загальна нумерація версій файлів;
- потрібно значно більше дискового простору на сервері для зберігання всіх гілок як глобальних, так й локальних;
- відсутня можливість блокування файлів.
До розподілених систем відносять: Git, Mercurial, Bazaar, , , .
Виникнення конфліктів та їх вирішення
Конфлікти можуть виникнути при операції злиття, розгалужені від різних джерел. При зміненні одного і того ж рядка різними користувачами виникає конфлікт. Тобто якщо один користувач внесе зміни в документ та виконає злиття — то конфлікту не буде. Але якщо після цього інший користувач змінить документ в тих же рядках, що і перший — то виникне конфлікт. В такому випадку конфлікт повинен вирішувати другий користувач (власне, через якого і виник конфлікт), або система (як правило, вирішення конфліктів покладається на користувачів).
Вирішення конфліктів
Ручний режим:
- Шляхом ручних змін конфліктних рядків.
- Примусовий запис своєї версії поверх попередньої (зафіксованої).
Автоматичний режим:
- Ординальна заміна. Схожа на примусовий запис, але відрізняється тим, що кожен користувач має свій пріоритет. Записуються зміни того в кого пріоритет вище.
Зауваження. Але далеко не в кожній системі існує пріоритет користувачів.
Поширені системи керування версіями
Див. також
Примітки
Джерела
- Web-програмування: Система керування версіями 2013
- Git - Про систему контролю версій
- (рос.)
- (англ.)betterexplained.com A Visual Guide to Version Control
Це незавершена стаття про програмне забезпечення. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sistema keruvannya versiyami SKV source code management SCM dzherelo revision control dzherelo source control dzherelo version control system dzherelo programnij instrument dlya keruvannya versiyami odinici informaciyi pochatkovogo kodu programi skriptu vebstorinki vebsajtu 3D modeli tekstovogo dokumentu tosho Sistema keruvannya versiyami instrument yakij dozvolyaye odnochasno ne zavazhayuchi odin odnomu provoditi robotu nad grupovimi proyektami Sistemi keruvannya versiyami zazvichaj vikoristovuyutsya pri rozrobci programnogo zabezpechennya dlya vidstezhennya dokumentuvannya ta kontrolyu nad postupovimi zminami v elektronnih dokumentah u sircevomu kodi zastosunkiv kreslennyah elektronnih modelyah ta inshih dokumentah nad zminami yakih odnochasno pracyuyut dekilka lyudej Kozhna versiya poznachayetsya unikalnoyu cifroyu chi literoyu zmini dokumentu zanotovuyutsya Zazvichaj takozh zberigayutsya dani pro avtora zroblenoyi zmini ta yiyi chas Instrumenti dlya kontrolyu versij vhodyat do skladu bagatoh integrovanih seredovish rozrobki Isnuyut dva osnovni tipi sistem keruvannya versiyami z centralizovanim shovishem ta rozpodilenim Sistema zberezhennya istoriyi redaguvan statej sho zastosovuyetsya u Vikipediyi ye prikladom sistemi keruvannya versiyami Zagalni vidomostiSistema kontrolyu dozvolyaye zberigati poperedni versiyi fajliv ta zavantazhuvati yih za potreboyu Vona zberigaye povnu informaciyu pro versiyu kozhnogo z fajliv a takozh povnu strukturu proyektu na vsih stadiyah rozrobki Misce zberigannya danih fajliv nazivayut repozitoriyem V seredini kozhnogo z repozitoriyiv mozhut buti stvoreni paralelni liniyi rozrobki gilki Gilki zazvichaj vikoristovuyut dlya zberigannya eksperimentalnih nezavershenih alpha beta ta povnistyu robochih versij proyektu final Bilshist sistem kontrolyu versiyi dozvolyayut kozhnomu z ob yektiv prisvoyuvati tegi za dopomogoyu yakih mozhna formuvati novi gilki ta repozitoriyi Vikoristannya sistemi kontrolyu versiyi ye neobhidnim dlya roboti nad velikimi proyektami nad yakimi odnochasno pracyuye velika kilkist rozrobnikiv Sistemi kontrolyu versiyi nadayut ryad dodatkovih mozhlivostej Mozhlivist stvorennya riznih variantiv odnogo dokumentu Dokumentuvannya vsih zmin koli kim bulo zmineno dodano hto yakij ryadok zminiv Realizuye funkciyu kontrolyu dostupu koristuvachiv do fajliv Ye mozhlivist jogo obmezhennya Dozvolyaye stvoryuvati dokumentaciyu proyektu z poetapnim zapisom zmin v zalezhnosti vid versiyi Dozvolyaye davati poyasnennya do zmin ta dokumentuvati yih Nevelikij slovnik osnovnih terminiv slengiv Trank trunk osnovna gilka kodu Branch branch vidgaluzhennya Chekin Check in submit commit vidpravlennya kodu v repozitorij Chekaut Check out oderzhannya zmini z repozitoriyu Konflikti vinikayut koli kilka lyudej pravlyat odin i toj zhe kod konflikti mozhna virishuvati Patch shmatok z zapisanimi zminami yaki mozhna zastosuvati do shovisha z kodomSvitovij dosvid Na sogodni u sviti isnuye bagato organizacij yaki vikoristovuyut sistemi kontrolyu versij u svoyij povsyakdennij roboti Praktichno kozhna firma sho viroblyaye programne zabezpechennya vikoristovuye yih Ale krim komercijnih organizacij sistemi kontrolyu versij vikoristovuyutsya v universitetah u vsomu sviti Tak napriklad mozhna vidiliti stattyu dvoh profesoriv universitetu v Toronto Gregori V Vilsona i Karen Rejd U svoyemu novomu proyekti voni namagayutsya stvoriti seredovishe dlya studentiv v yakomu voni hochut vikoristati sistemi kontrolyu versij issue trackers web logi Deyaki universiteti pragnut vikoristovuvati i stvoryuvati taki seredovisha v yakih usi studenti tehnichnih specialnostej zmogli b mati sistemu kontrolyu versij web logi ta inshe U SShA departament osviti takozh zajmayetsya cim pitannyam Vprovadzhennya podibnih sistem vidbuvayetsya na derzhavnomu rivni Vidi sistem kontrolyu versiyiCentralizovani sistemi kontrolyu versij Centralizovana sistema kontrolyu versiyi kliyent serverna sistema dani v yakij zberigayutsya v yedinomu servernomu shovishi Ves obmin fajlami vidbuvayetsya z vikoristannyam centralnogo servera Ye mozhlivist stvorennya ta roboti z lokalnimi repozitoriyami robochimi kopiyami Perevagi zagalna numeraciya versij dani znahodyatsya na odnomu serveri mozhliva realizaciya funkciyi blokuvannya fajliv mozhlivist keruvannya dostupom do fajliv Nedoliki onovlennya robochoyi kopiyi ta zberezhennya zmin mozhlive lishe za nayavnosti merezhevogo z yednannya z osnovnim serverom Do takih sistem vidnosyat Subversion Concurrent Versions System Team Foundation Server Rozpodileni sistemi kontrolyu versiyi Rozpodilena sistema kontrolyu versiyi angl Distributed Version Control System DVCS sistema yaka vikoristovuye zamist modeli kliyent server rozpodilenu model zberigannya fajliv Taka sistema ne potrebuye servera adzhe vsi fajli znahodyatsya na kozhnomu z komp yuteriv Perevagi Kozhnij z rozrobnikiv pracyuye zi svoyim vlasnim repozitoriyem Rishennya shodo zlittya gilok prijmayetsya kerivnikom proyektu Nemaye potrebi v merezhevomu z yednanni Nedoliki ne mozhlivo kontrolyuvati dostup do fajliv vidsutnya zagalna numeraciya versij fajliv potribno znachno bilshe diskovogo prostoru na serveri dlya zberigannya vsih gilok yak globalnih tak j lokalnih vidsutnya mozhlivist blokuvannya fajliv Do rozpodilenih sistem vidnosyat Git Mercurial Bazaar Viniknennya konfliktiv ta yih virishennyaKonflikti mozhut viniknuti pri operaciyi zlittya rozgaluzheni vid riznih dzherel Pri zminenni odnogo i togo zh ryadka riznimi koristuvachami vinikaye konflikt Tobto yaksho odin koristuvach vnese zmini v dokument ta vikonaye zlittya to konfliktu ne bude Ale yaksho pislya cogo inshij koristuvach zminit dokument v tih zhe ryadkah sho i pershij to vinikne konflikt V takomu vipadku konflikt povinen virishuvati drugij koristuvach vlasne cherez yakogo i vinik konflikt abo sistema yak pravilo virishennya konfliktiv pokladayetsya na koristuvachiv Virishennya konfliktiv Ruchnij rezhim Shlyahom ruchnih zmin konfliktnih ryadkiv Primusovij zapis svoyeyi versiyi poverh poperednoyi zafiksovanoyi Avtomatichnij rezhim Ordinalna zamina Shozha na primusovij zapis ale vidriznyayetsya tim sho kozhen koristuvach maye svij prioritet Zapisuyutsya zmini togo v kogo prioritet vishe Zauvazhennya Ale daleko ne v kozhnij sistemi isnuye prioritet koristuvachiv Poshireni sistemi keruvannya versiyamiDokladnishe Spisok sistem keruvannya versiyami Concurrent Versions System CVS Subversion SVN Revision Control System RCS Perforce Microsoft Visual Source Safe VSS Mercurial Bazaar Darcs GitDiv takozhRozpodilena sistema keruvannya versiyami Integrovane seredovishe rozrobkiPrimitkiVilson Gregori Rejd Karen 2005 Learning by doing introducing version control as a way to manage student assignments PDF anglijskoyu Nyu Jork ACM s 272 276 doi 10 1145 1047344 1047441 ISBN 1 58113 997 7 DzherelaWeb programuvannya Sistema keruvannya versiyami 2013 Git Pro sistemu kontrolyu versij ros angl betterexplained com A Visual Guide to Version Control Ce nezavershena stattya pro programne zabezpechennya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi