Git කියන්නේ මොකක්ද? මේක කොයි කාලේද පටන්ගත්තේ? මේකෙන් මොනවද කෙරෙන වැඩ? වගේ කරුණු කිහිපයක් ගැන කතා කරන්න හිතුවා.

Git කියන්නේ Version Control System එකක්. මොකක්ද Version Control System එකක් කියන්නේ? හිතන්න අපි අලුතෙන් web system එකක් හදනවා කියලා. මේ system එකේ මුල්ම කොටස හදලා ඔබ hosting කලාට පස්සේ, customer හිතන්න පුළුවන්, නැත්නම් customerගේ buyer කෙනෙක් ඔබේ web system එකේ අඩුපාඩුවක් එහෙමත් නැත්නම් Bug එකක් එහෙමත් නැත්නම් පාට නොගැලපීමක් වගේ දෙයක් දකින්න පුළුවන්. ඔහු ඔබට කියාවි මේක වෙනස් කරන්න කියලා. ඔබ මේ දේ වෙනස් කරන්න ගිහින් ඔබ ඒක නිර්මාණය කරලා, host කරලා විනාඩි පහක් යන්න කලින් ඔබට ඇමතුමක් එනවා customerගෙන් system එක වැඩ කරන්නේ නැහැ කියලා.මේ විදිහට මුළු system එකම වැඩ කරන්නේ නැතුව ගියොත් ඔබ ලග backup එකක් තියෙනවද? ඔහුට වැඩ කරන්න ඔබ ලග පරණ system එක තියාගන්නවද? මේ විදිහට වසර ගණනක් ඔබත් එක්ක ඉන්න ඔබේ සේවාදායකයෙක් එක පාරටම මෙහෙම කිවුවොත් අපි ගිය මාසේ එකතු කරපු features අයින් කරමුද කියලා මොනවද ඔබට තියෙන විසදුම්? මේවත් එක්කම තමයි මේ Version Control System කරලියට ආවේ.

ඔබට පුළුවන් Version Control System එකකදී පළමු වෙනස්කමේ ඉදන්ම වෙන වෙනම Versions maintain කරන්න.2005 අප්‍රේල් මාසයේදී initial release එක සිද්ධ වුනු Git නිර්මාණය වුනේ Linus Torvalds අතින්. නම අනුවම ඔහු තමයි Linux Kernal එක ලෝකයට හදුන්වා දුන්නෙත්. Git කියන්නේ Open Source Software එකක්. BitKeeper හා Monotone කියන software වල තිබුන හොද දේවල් එකතු කරගෙන සහ නරක දේවල් ඉවත් කරමින් තමයි මේ Git නිර්මාණය වුනේ. Linux Kernal එක ගොඩනැගුන කාලයේදී SCM තවත් විදිහකට කියනවනම් Source Code Management වලට පහසු ක්‍රමයක් තිබුනේ නැහැ. හිතන්න ඔබේ system එක වෙනුවෙන් developersල 5ක් වැඩ කරනවා කියලා. මේ අය හැමෝම කරන වැඩ කොහොමද ලොකු system එකට add කරන්නේ?

අපි version maintain වලට backups තියාගන්න අපේ Hard Disk එක හෝ Dropbox පාවිච්චි කරනවනම් ඔබ versions save කරන්න පුළුවන් v 1.1, v 1.2, v 1.3, v 1.4 විදිහට. අන්තිමට ඔබ 2.3 වගේ Version එකක් කරද්දී ඔබේ සේවාදායකයා කිවුවොත් ඔබ මට ගිය මාර්තු මාසේ පෙන්නපු dropdown list එක අපි අයෙත් system එකට දාමුද කියලා, ඔබ මේක කොහෙන්ද හොයන්නේ. ඔබ තවත් ඉදිරියට ගිය කෙනෙක්නම් ඔබ කියාවි මම readme text file එකක් system එකට add කරනවා කියලා. මොහොතක් සිතන්න මේ හැමදේම කරලා දෙන tool එකක් අප සතුව තිබෙනවානම් අපි මේ විදිහට කරදර විදින්න අවශ්‍ය නැහැ.

Version Control System වර්ග දෙකක් තිබෙනවා. ඒ Centralized VCS හා Distributed VCS කියන වර්ග දෙක.

රුපයේ විදිහටම Centralized VCS එකක එක main server එකක් තියෙනවා. මේ server එක මත තමයි සියලුම files පවතින්නේ. මොහොතක් සිතන්න මේ system එක virus attack එකක් වෙලා down වුනොත් ඔබේ system එකම එතනින් ඉවර වෙන්න පුළුවන්. මේ වගේ වේලාවකදී  Centralized VCS එකකින් ප්‍රයෝජනයක් නැති වෙනවා.

එතකොට Distributed VCS එකකදී මොකක්ද වෙනස?

Distributed VCS එකකදී අපි working copy එකට අමතරව server එකේ තිබෙන code එක අපේ local repository එකක තියාගන්නවා. මේ නිසා server එක පිපුරුවත් අපිට ප්‍රශ්නයක් නැහැ. මොකද code එක අපේ පරිගණකවල අපි තියාගෙන ඉන්නේ. Git කියන්නෙත් Distributed VCS එකක්.

Trunk Based Development

සිතන්න ඔබ android project එකක වැඩ කරනවා කියලා. ඔබේ project එක හොදින් වැඩ කරන නිසා ඔබ version එක මාරු කරනවා 3.0 වලට. දැන් ඔබ වැඩ කරන්නේ 3.0 වල. එක පාරටම අන්තිමට තිබුණු 2.6 වල bug එකක් ඇවිත් ඔබට හදන්න වෙනවා. ඔබ කොහොමද මෙහෙම දෙකක් manage කරන්නේ? මේකට අපි කියනවා trunk based development කියලා.

ඔබට බලන්න පුළුවන් රුපයේ master files continuously වැඩ කරන් යන වෙලාවේදී branches වලට දාගන්නවා මේ අමතර වෙනස්කම්. මේ පහසුකම Git සතුව පවතිනවා. මේ Git පාවිච්චි වෙන softwares මොනවද? මේවා වැඩ කරන්න පුළුවන් online විතරද? අපි කතා කරමු මීළඟ ලිපියෙන්.

නැවත හමුවෙමු…