අනුවාද පාලනය (Version Control) යනු කුමක්ද?
ඔබ ඇතුළු සංවර්ධකයන් දස දෙනෙකුගෙන් යුත් කණ්ඩායමක් එකම මෘදුකාංග ව්යාපෘතියක වැඩ කරන බව සිතන්න. සෑම කෙනෙක්ම එකම කේත ගොනු (code files) වෙනස් කරයි. එක් අයෙකු කළ වෙනසක් නිසා තවකෙකුගේ කේතය ක්රියා විරහිත වුවහොත් කුමක් සිදුවේද? ඔබ අතින් වැරදීමකින් වැදගත් කේත කොටසක් මකා දැමුවහොත්, එය නැවත ලබා ගන්නේ කෙසේද?
මෙම ගැටළු වලට විසඳුම තමයි අනුවාද පාලන පද්ධතිය (Version Control System - VCS). VCS යනු කාලයත් සමග ඔබගේ කේතයේ සිදුවන සියලුම වෙනස්කම් "snapshots" ලෙස වාර්තා කර තබා ගන්නා පද්ධතියකි. එය ඔබගේ කේතය සඳහා වන "කාල යන්ත්රයක්" (Time Machine) වැනිය. ඔබට ඕනෑම අවස්ථාවක අතීත අනුවාදයකට ආපසු යාමට, කවුරුන් විසින්, කුමන වෙනසක්, කවදාද සිදු කළේ දැයි බැලීමට, සහ ගැටුම් වලින් තොරව කණ්ඩායමක් ලෙස එකට වැඩ කිරීමට හැකියාව ලැබේ.
Git සහ GitHub: වෙනස කුමක්ද?
මෙම නම් දෙක බොහෝවිට එකට භාවිතා වුවත්, ඒවායේ කාර්යයන් දෙකකි.
- Git: මෙය ඔබගේ පරිගණකයේ ස්ථාපනය කරන මෘදුකාංගයකි. එය ඔබගේ කේතයේ වෙනස්කම් track කරන, ලොව ජනප්රියම අනුවාද පාලන පද්ධතියයි. Git යනු මෙවලමයි (Tool).
- GitHub: මෙය ඔබගේ Git ව්යාපෘති (Repositories) අන්තර්ජාලයේ ගබඩා කර තැබීමට සහ අන් අය සමග බෙදා ගැනීමට සලසන වෙබ් අඩවියකි. එය ඔබගේ කේතය සඳහා වන cloud storage සේවාවක් සහ සහයෝගීතා වේදිකාවකි (collaboration platform). GitHub යනු සේවාවයි (Service).
මූලික Git ක්රියාවලිය (The Basic Workflow)
වෘත්තීය සංවර්ධකයෙකු දිනපතා භාවිතා කරන මූලික ක්රියාවලිය පියවරෙන් පියවර මෙසේය:
- ඔබගේ දේශීය පරිගණකයේ කේත ගොනු වෙනස් කිරීම (Edit files).
- Staging Area එකට එකතු කිරීම (
git add): ඔබ සිදු කළ වෙනස්කම් වලින්, ඊළඟ snapshot එකට (commit) ඇතුලත් කිරීමට අවශ්ය ගොනු මොනවාදැයි Git ට පැවසීම. - Snapshot එකක් ගැනීම (
git commit): Staging area එකේ ඇති වෙනස්කම්, ඔබගේ දේශීය ගබඩාවේ (local repository) ඉතිහාසයට ස්ථිරවම සටහන් කිරීම. සෑම commit එකකටම, ඔබ සිදු කළ වෙනස විස්තර කරන පණිවිඩයක් (commit message) යෙදිය යුතුය. - GitHub වෙත යැවීම (
git push): ඔබගේ දේශීය ගබඩාවේ ඇති commits, දුරස්ථ ගබඩාව (remote repository - GitHub) වෙත යැවීම. එමගින් ඔබගේ කණ්ඩායමේ අනෙක් අයට ඔබගේ වෙනස්කම් ලබා ගත හැක. - GitHub වෙතින් ලබා ගැනීම (
git pull): කණ්ඩායමේ අනෙක් අය විසින් සිදු කර GitHub වෙත push කළ නවතම වෙනස්කම්, ඔබගේ දේශීය ගබඩාවට ලබා ගැනීම.
Branching සහ Merging: Git හි සුපිරි බලය
Git හි ඇති ප්රබලම සංකල්පයකි. ඔබගේ ව්යාපෘතියේ ප්රධාන කේතය main නමැති ශාඛාවේ (branch) ඇතැයි සිතන්න. ඔබට නව feature එකක් නිර්මාණය කිරීමට අවශ්ය වූ විට, ඔබ main branch එකට සෘජුවම බලපෑමක් නොවන පරිදි, එයින් අලුත් ශාඛාවක් (උදා: new-feature-branch) සාදා, එහි වැඩ කරයි.
ඔබගේ feature එක සම්පූර්ණ කර, පරීක්ෂා කර අවසන් වූ පසු, ඔබ එම නව ශාඛාව නැවත main ශාඛාව සමග ඒකාබද්ධ කරයි (Merge). යම් හෙයකින් එම feature එක අසාර්ථක වුවහොත්, ඔබට එම ශාඛාව පහසුවෙන්ම මකා දැමිය හැක. main branch එකට කිසිදු හානියක් සිදු නොවේ. මෙමගින්, ප්රධාන කේතය සැමවිටම ස්ථාවරව (stable) තබා ගනිමින්, නව අත්හදා බැලීම් කිරීමට හැකියාව ලැබේ.
අවසාන වශයෙන්
Git සහ GitHub යනු අද දවසේ ඕනෑම මෘදුකාංග සංවර්ධකයෙකුට අත්යවශ්යම කුසලතාවයන් දෙකකි. එය කණ්ඩායම් ක්රියාකාරීත්වය සක්රීය කරනවා පමණක් නොව, ඔබගේ වෘත්තීය කළඹ (professional portfolio) ලෙසද ක්රියා කරයි. ඔබගේ GitHub profile එක, ඔබගේ කුසලතා ප්රදර්ශනය කරන ප්රබලතම සාක්ෂියක් විය හැක.
දැන් අපි කේත පදනමක් (codebase) කළමනාකරණය කරන ආකාරය දන්නා නිසා, ඊළඟට අප ඉගෙන ගත යුත්තේ එම කේත පදනම තුළ, කේතයම උසස් ප්රමිතියකින්, නඩත්තු කිරීමට පහසු සහ පරිමාණය කළ හැකි (scalable) ලෙස ව්යුහගත කරන්නේ කෙසේද යන්නයි. ඒ සඳහා, අපි ඊළඟ මොඩියුලයෙන් "මෘදුකාංග ගෘහ නිර්මාණ ශිල්පය සහ සැලසුම් රටා (Software Architecture & Design Patterns)" පිළිබඳව සාකච්ඡා කරමු.