வெர்சன் கன்ட்ரோல் சிஸ்டம் – ஓர் அறிமுகம்

பதிப்பு கட்டுப்பாட்டு அமைப்பு(Version Control System) என்பது மென்பொருள் உருவாக்கும் வல்லுனர்களுக்கு ஒரு வரப் பிரசாதம்.

‘அப்படியா? நான் அதைப்பற்றி கேள்விப்பதே இல்லையே!’ என்கிறீர்களா? உங்களுக்கு அறியாமலேயே இதை பயன்படுத்தி வருகிறீர்கள்.

பொதுவாக ஒரு மென்பொருளை குழுவில் ஒன்று முதல் பத்து வரை (சிறிய மென்பொருளுக்கு) அல்லது நூற்றுக்கணக்கான (பெரிய, சிக்கலான மென்பொருளுக்கு) வல்லுனர்கள் இருப்பார்.

குழுவில் அனைவருக்கும் உரித்தான பணிகள் பகிரப்படும்.மென்பொருள் நூற்றுக்கணக்கான சிறு சிறு துண்டு வேலைகளாக பிரிக்கப்படும்.

நீங்கள் தான் முதலில் Program-ஐ எழுதுபவர். உங்கள் இஷ்ட தெய்வதத்தையும், இஷ்ட காதலன் / காதலி / மனைவி / கணவர் / சினிமா நாயகி / நாயகன் என அனைவரையும் வணங்கி, பிள்ளையார் சுழி, முருகன் துணை இவற்றுக்கு ஈடான முதல் வரியை டைப் செய்கிறீர்கள்.

#! /usr/bin/python

இதோ இரண்டாவது வரி,

#! /usr/bin/python

print “hello world”

இந்த நிரலை hello.py என்று பெயர் தந்து சேமிக்கிறீர்கள்.
பக்கத்தில் இருப்பவரிடம் காட்டுகிறீர்கள். அவர் சிரிக்கிறார்.

‘என்ன இது! எத்தனை காலம் தான் hello world-ஐயே முதலில் எழுதுவது? ஏதாவது புதிதாய் யோசிங்க!’ இது அவர்.

‘ம்… அதுவும் சரிதான் இதோ மாற்றி விடுகிறேன்!’ இது நீங்கள்.

முதன் முதலில் எழுதிய program இது. ஞாபகார்த்தமாய் ஒரு backup எடுத்து வைத்துக் கொள்வோம்.

cp hello.py hello-first.py

இப்போது hello.pyஐ பின்வருமாறு மாற்றுகிறீர்கள்.

 

#! /usr/bin/python

print “Nameethave Thunai”

‘அடக்கடவுளே! உன் பக்தி வாழ்க! அதற்காக இப்படியா? உன் முதல் program-ஐ தொடங்குவது? இது நண்பர் சிரித்துக்கொண்டே. (என்ன அங்கே சத்தம்? என்று கரகாட்டக்காரன் சரளா குரலில் கேட்கிறாள் பக்கத்து சீட் பெண் ஒருத்தி)

‘சரி. இப்போது பார்’

cp hello.py hello-namitha.py

#! /usr/bin/python

print “Vanakkam Kaniyam readers”

“மிகப்பிரமாதம்! சீக்கிரம் இதே program-ல் உனக்கு தரப்பட்ட பணிகளை எழுது. நான் எனது program-ஐ எழுதுகிறேன். இன்று மாலை நமது இருவரின் பணிகளையும் இணைக்க வேண்டும்” என்று கூறிய நண்பர் தனது லேப்டாப்பில் மூழ்குகிறார்.

இப்போது உங்களிடம் மூன்று files உள்ளன. உங்கள் பணிகளுக்கு தேவைப்படும் வகையில் மேலும் 10 புதிய file-களை உருவாக்கி அவற்றில் பல்வேறு நிரல்களை எழுதுகிறீர்கள்.

ஒவ்வொரு file-லிலும் சிறுசிறு மாற்றங்கள் செய்யும் முன் அந்த file-ஐ வேறு ஒரு புதிய பெயரில் backup எடுத்து வைக்கிறீர்கள்.

மாலையில், சரியாக இயங்கும் 10 file-களும் backup-ஆக ஒரு 25 file-களும் உங்களிடம் உள்ளன. அவை அனைத்தையும், இன்றைய தேதியில் ஒரு folder-ல் உருவாக்கி அதில் சேமிக்கிறீர்கள். பின் அந்த folder-ஐ நண்பருக்கு அனுப்பி, தேவையான file, backup பற்றிய விவரங்களைத் தருகிறீர்கள்.

இவ்வாறு உங்கள் project நாளொரு மேனியும் பொழுதொரு வண்ணமுமாக வளர்கிறது. ஒரு மாத இறுதியில் உங்களிடம் 20 folder-கள், அவற்றில் சரியான file-கள் கொஞ்சமும் backup file-கள் அதிகமும் உள்ளன.

மூன்று மாத இறுதியில் உங்களிடம், பல்லாயிரம் file-கள். File-களுக்கு பெயர் வைப்பதில் பல்வேறு முறைகள். சிலவற்றில் backup1, backup2, backup3….. சிலவற்றில் change1,change2,change3….. மேலும் சந்தோஷமான தருனங்களில் Hansika, Trisha, Amala என்றும் பெயர் வைக்கிரீர்கள் என வைத்துக்கொள்வோம்.

திடீரென ஒருநாள், உங்கள் குழுவில் புதிதாய் சேர்ந்த ஒருவர், “போன வாரம் திங்கள் கிழமை நீங்கள் ஒரு போட்டோவை commons.mediawiki.org – க்கு upload செய்யும் நிரலை எழுதினீர்களாமே. அதை தர முடியுமா?” என்று கேட்கிறார்.

‘ஓ! தாராளமாக இதோ தேடித் தருகிறேன்!’ என்று கூறிவிட்டு நீங்கள் உங்கள் கணிணியில் தேடுகிறீர்கள். Mediawiki.uploader என்று ஒரு folderஉள்ளது. அதில் பல்வேறு file-கள்.

upload-namitha.py

upload-backup22.py

upload-full.py

upload-working.py

upload-finished3.py

 

என பல்வேறு பெயர்களில் file-கள் சிரிக்கின்றன. எது சரியாக வேலை செய்யும்? ஒவ்வொரு file-ம் பல்வேறு நிலைகளில் உள்ளன.

ஒவ்வொன்றாக இயக்கி பார்த்து, பிழைவரும் file-களை வேறு folder-ல் மாற்றி ஒரு மணி நேர தேடலில் சரியான file-ஐ கண்டு பிடிக்கிறீர்கள்.

இதே நிலையில் குழுவில் உள்ள அனைவரும் இருக்கலாம். எல்லோரிடமும் தினம் ஒரு backup folder என பலநூறு folder-கள், அவற்றுள் பல்லாயிரம் பெயர்களில் file-கள்.

10 பேர் கொண்ட குழுவிடம் ஒரு ஆண்டு முடிவில், தோராயமாக 220*10=2200 folder-கள். அவற்றும் பல்லாயிரம் file-கள்.

ஒரு project-ஐ குறிப்பிட்ட படிகளில் release செய்ய அனைவரிடமிருந்து மிகச் சரியாக வேலை செய்யும் file-களை மட்டும் தேர்ந்தெடுத்து, அவை அனைத்தையும் ஒருங்கிணைக்க வேண்டும்.

கடலில் தொலைத்த ஊசிய தேடும் பணி இது.

இந்த சிக்கலை தீர்ப்பதே Version Control System. இதில் centralized, distributed என இரு பிரிவுகள் உண்டு.

Centralized Version Control System-ல் அலுவலகத்தில் அனைவருக்கும் பொதுவாக ஒரு server இருக்கும். அனைவரும் தமது program file-களை சேமித்து வைப்பார். சேமிக்கும் முன் தமது வேலை , file-கள், அவற்றின் மாற்றங்கள் பற்றி குறிப்புகள் தர வேண்டும்.

பொதுவான சர்வரில் இருப்பதால் நமது கணினியில் தினம் ஒரு backup folder தேவை இல்லை. இந்த server ஒரு கால எந்திரம் போல. எந்த ஒரு தேதியையும் தந்து, அந்த நாளில் நாம் சேமித்த file-களை பெற முடியும். இதன் மூலம் பல்லாயிரம் பேர் உருவாக்கும் file-களையும் ஒரே server-ல் திறம்பட கையாள முடியும்.

ஒரே file-ஐ எந்த மாற்றமும் இன்றி இரண்டாவது முறை சேமித்தாலும், அது இரு மடங்கு disk space எடுக்காது. தனக்குள் ஒரு link மட்டுமே செய்து கொள்ளும்.

ஒரே 10 MB file-ஐ ஒரு நூறு folder-களில் copy செய்து சேமித்தாலும், அது 10 MB இடத்தை மட்டுமே பிடிக்கும். 10 * 100 = 1000 MB என இருக்காது.

இந்த centralised வகையில் CVS எனும் Concurrent Version System இருந்தது. இதன் குறைகளை களைந்து SVN எனப்படும் Subversion உருவாக்கப்பட்டது.

Distributed வகையில் ஒவ்வொருவரும் நம் கணினியில் ஒரு server-ஐ இயக்கலாம். Server-ம் நாமே, Client-ம் நாமே. பற்பல சர்வர்களை எளிதாக ஒருங்கிணைக்கலாம். இந்த வகையில் GIT, Mercurial போன்றவை உள்ளன.

தொடரும்…

 

%d bloggers like this: