Version Control System

September 3, 2021 | Indusha Uluwaduge

Version Control System යනු ලෝකයේ බොහෝ දෙනෙක් අතර ඉතාමත් සුප්‍රසිද්ධ සංකල්පයකි. මෙය Source Control System හෙවත් Revision Control System ලෙසද හදුන්වයි. VCS යනු එකම තොරතුරු ඒකකයක් තුල බහු සංශෝධන කළමනාකරණය කිරීමට ඉඩ සලසන පද්ධතියක් වේ. මෙය documents, source files වැනි දෑ අඩංගු කරන දත්ත සමුදායකි. එවාගේම Software's Configure කිරීමෙදී සහ ඒවා කළමනාකරණය කිරීමේදී මෙය ඉතාමත් වැදගත් වේ. VCS මගින් පුද්ගලයන් කිහිප දෙනෙකුට විවිධ ස්ථාන වල සිට වුවද සහයෝගයෙන් කටයුතු කිරීමට, ලිපිගොනු හුවමාරු කරගැනීමට මෙන්ම එකම ව්‍යාපෘතියක එකවර වැඩ කිරිමට ඉඩ සලසයි.

මෙය ඉතාමත් ප්‍රයෝජනවත් වන්නේ මෙය මගින් edit කිරීමට ඉඩ ලබා දීම සහ එම changes save කර තබා ගැනීමයි. එනම් ඔබගේ source document එකට ඔබ විසින් එක් එක් අවස්ථාවන්හිදි කරන editings පිළිවෙලින් versions ලෙස ගබඩා කිරීම මෙමගින් සිදු කරයි. එපමණක් නොව එම එක් එක් versionහි author කවුරුන්ද යන වග, එය සිදු කර වේලාව සහ දිනය වැනි තොරතුරු රාශියක් ගබඩා කිරීම සිදු කරයි. මෙමගින් අපට versions සංසන්දනය කිරිමට ඉඩ සලසයි. සියලුම දත්ත එක් ස්ථානයක ගබඩා කර ඇති නිසාත් එක් එක් version එකට අදාළ තොරතුරු සියල්ල ගබඩා කර ගැනීම නිසාත් එමගින් පුද්ගලයන්ට දත්ත හුවමාරුව මෙන්ම එම දත්ත මත කටයුතු කිරීම ඉතා පහසු වී ඇත.

Version Control System වල ඇති common terminologies කිහිපයක් ගැන විමසා බලමු. මෙම terminologies, system එකෙන් system එකට වෙනස් වෙන්න පුලුවන්.

වර්තමානයේ භාවිත වන version control system කිහිපයකි.

· Git

· SVN

· Helix Core

· Mercuria

මේ අතුරින් Git යනු වඩාත් ජනප්‍රිය උදාහරණය වේ. ඊට හේතු කිහිපයක් බලපායි. එම හේතු මොනවාද සහ Git ක්‍රියා කරන්නේ කෙසේද යන්න පිළිබද වැඩිදුර තොරතුරු මෙම ලිපියෙන් කතා කරමු.

Git යනු open source platform එකකි. මෙය නිර්මාණය කර තිබෙන්නේ Linux නිර්මාතෘ Linus Torvalds විසිනි. අනෙකුත් VCS වගේම Git මගින්ද documents ගබඩා කිරීම සිදු කරන අතර මෙය වඩාත් බහුලව භාවිත වන්නේ coding සඳහාය. ඔබ IT Field එක පිළිබද රුචියක් දක්වන්නෙක් නම් GitHub Profile එකක් තිබීම වඩාත් ප්‍රයෝජනවත් වේවි. ඊට හේතුව වන්නේ developersලා පමණක් නොව සේවා යෝජකයින්ද GitHub පිළිබද දක්වන උනන්දුවයි.

CVS වැනි Git හි පූර්වගාමීන් තම ව්‍යාපෘතියට අදාළ සියලුම මූලාශ්‍ර එක මධ්‍යම repository එකක ගබඩා කරයි. එවිට ඔවුන් changes සිදු කරන්නේ කෙලින්ම මෙම repository එකටය. නමුත් Gitහිදී අපට changes කිරීමට අවශ්‍ය වුවහොත් repository එකේ copy එකක් අරගෙන අවශ්‍ය changes එම copy එකේ සිදු කර එය server එකට යොමු කරයි. මෙහිදී තිබෙන තවත් එක් වාසියක් වන්නේ වෙනස්කම් සිදු කරන්නේ අප සතු copy එකට නිසා changes සිදු කරන අතරතුර server එකට connect කර තිබීම අවශ්‍ය නොවේ.

GitHub හි repository එකක් නිර්මාණය කරගන්නා ආකාරය

අප මෙහිදී repository යනුවෙන් හදුන්වන්නේ අනෙකුත් platform වල project යන්නයි. මෙම repository එක තුල තමයි ව්‍යාපෘතියට අදාළ සියලුම මූලාශ්‍ර, ලිපිගොනු අඩංගු වන්නේ. ඊට අමතරව අපගේ මෙම repository එක තුල README file එකක් ඇතුලත් කල යුතුය. එම README file එකේ තිබෙන්නේ අපගේ ව්‍යාපෘතියට අදාළ තොරතුරුය. අප අලුතින් repository එකක් නිර්මාණය කරන සෑම අවස්ථාවකම README file එකක් ඇතුලත් කල යුතුය.

පහත සදහන් පරිදි repository එකක් නිර්මාණය කිරීමේදී new repository යන්න මත click කර repository එකට නමක් ලබා දී අවශ්‍ය නම් description එකක් ඇතුලත් කල හැකිය. ඉන්පසුව Initialize this repository with a README යන checkbox එක check කර create repository මගින් README file එකක් සමඟම repository එක නිර්මාණය කල හැකිය.

අප ව්‍යාපෘතියක් සිදු කරන විට එහිදී versions බොහෝ ප්‍රමාණයක් නිර්මාණය වේ. මෙම versions එකින් එක edit කිරීම සංකීර්ණ කාර්යයකි. Branching මගින් versions කිහිපයක් එකවර edit කිරීමට ඉඩ සලසයි. අපගේ repositoryයේ ස්වංක්‍රීයව master branch එකක් නිර්මාණය වී ඇත. එහි ඇත්තේ අප දැනට නිර්මාණය කර ඇති දත්තයි. අප විසින් අලුත් branch එකක් නිර්මාණය කල විට එහි ඇත්තේද master branch හි copy එකකි. අප ඉන්පසු වෙනස්කම් සිදු කරන්නේ එය මතය. New branch එකක් සාදා ගැනීමට නම් පහත පරිදි new repository හි තිබෙන branch: master යන dropdown list එක මත click කර නමක් type කර create branch යන්න click කිරීමෙන් අලුතින් branch එකක් නිර්මාණය කර ගත හැකිය.

මෙහිදී අපට එක පුද්ගලයෙකුගේ repository එකක් තවත් repository එකකට copy කිරීමට හැකිය. එය forking ලෙස හදුන්වයි. අපට වෙනත් අයෙක්ගේ repository එකක changes සිදු කිරීමට අවශ්‍ය නම් ඒ අදාළ පුද්ගලයාට changes සිදු විය යුතු ආකාරය සහිත දැන්වීමක් සමග pull request එකක් යැවිය යුතුය. එවිට එම පුද්ගලයාගේ කැමත්ත මත ඔහු අපගේ repository එක අධ්‍යනය කර එම වෙනස්කම් ඔහුගේ repository එකට merge කරනු ඇත.

Pull request එකක් නිර්මාණය කිරීමට නම් pull request යන්නට පිවිස new pull request යන්න click කල යුතුය. අනතුරුව example comparison යන කොටුවේ අප විසින් changes සිදු කරන ලද branch එක සහ master branch එක සංසන්දනය කර සිදු විය යුතු changes සදහන් කර create pull request යන්න click කල යුතුය.

මෙම fork, pull request සහ merge යන කාර්යයන් මගින් GitHub වලට විශාල වටිනාකමක් ලබා දෙයි.


GitHub යනු ලෝකයේ විශාලතම developer community එකක් තියෙන මෙවලමක්. මෙමගින් developersලා අතර සහයෝගිතාව වර්ධනය කරන අතර එකිනෙකා සමඟ සන්නිවේදනයද පහසු කරයි. ඔවුන් විවිධ ස්ථාන වල සිටියද එය නොහැඟෙන පරිදි එක ස්ථානයක සිට කටයුතු කරන අයුරින්ම තම ව්‍යාපෘතියේ වැඩ කටයුතු කරගෙන යාමට මෙමගින් ඉඩ සලසයි.

Common terminology in Version control system

Initialize

අලුත් repository එකක් නිර්මාණය කිරීම මෙහිදි සිදු කරයි

Repository

ඔබ විසින් නිර්මාණය කරන ලද සියලුම files, source documents ආදිය store වෙන්නෙ repositories වල වන අතර බොහෝ දුරට ඒවා server එකක store කරනු ලබයි.

Commit

Version Control System හි ප්‍රධානම ‍කාර්‍යයක් වන්නේ commit කිරීමයි. එනම් අපගේ කේතය මත සිදු කරන changes අපගේ main repository එකට merge කිරීමයි. මෙහිදී commit message එකක් සමග අපගේ local repository එක main repository එක වෙත යවනු ලබයි.

Clone

Git repository එකක් clone කිරීමේදී අප විසින් එහි local copy එකක් නිර්මාණය කරගනී. මෙම clone කරන අවස්ථාවේදී අපගේ version එක සහ එම repository එක සමාන වේ. මෙසේ clone කරගන්නා repository එක edit කිරීම, compile කිරීම ආදිය සිදු කළ හැකිය.

Branch

අපගේ ව්‍යාපෘතියේ versions නිර්මාණය කිරීමෙන් branches සාදා ගත හැකිය. මෙසේ සාදා ගන්නා branches වල විවිධ ආකාරයේ features ඇත. එනිසා ප්‍රධාන repository එකට changes නොකර අළුත් features සමග කටයුතු කිරීමට branching මගින් ඉඩ සලසයි. අපගේ ප්‍රධාන repository එකද branch එකක් වන අතර එය master branch ලෙස හදුන්වයි. අප අත්හදා බැලීම් සිදු කරන්නෙ අප විසින් පසුව සාදාගන්නා branches වලටය.

Pull

අනෙකුත් අය විසින් pull request කර ඉල්ලන ලද සිදුවිය යුතු changes පිලිබ අවධානය යොමු කිරීමක් සිදු වන අතර ඒවයින් අවශ්‍ය changes තම repository එකේ සිදු කිරීම මෙහිදී සිදු වේ.

Conflict

විවිධ පරිශිලකයන් විසින් එකම document එකක edit කිරීමේදි system එක මගින් තෝරා ගැනීමට නොහැකි වූ විට conflict වීමක් සිදුවෙයි. මෙවැනි අවස්ථාවක එක් පරිශීලකයෙක් මගින් කරන ලද වෙනස්වීම් combine කල යුතුයි.

Checkout

එක් branch එකක සිට තවත් branch එකකට යාමේදී අප සංස්කරණය කරන්නෙ අප බලාපොරොත්තු වූ කොටසේද යන්න තහවුරු කිරීම මෙහිදී සිදු වේ.

සටහන - ඉඳූෂා උළුවඩුගේ