Friday, October 12, 2007

நிரல் பராமரிப்பு - 2

இது cvsல் எப்படி நடக்கிறது என்று பார்க்கலாம்.

ஒரு மென்பொருள் திட்டத்தில் நான்கு அடைவுகள் இருக்கின்றன என்று வைத்துக் கொள்வோம்.
global_files
programs
admin
users

ஒவ்வொன்றினுள்ளும் பல கோப்புகள் அல்லது உள்அடைவுகள் இருக்கலாம்.
project
global_files -
global_db.inc
global_form.inc
global_report.inc
global_page.inc
programs -
order_entry.php
shipment_entry.php
bill_entry.php
order_report.php
admin -
backup_db.php
user_management.php
users -
change_password.php
preferences.php
login.php

இவை அனைத்தையும் ஒரு மத்திய இடத்தில் பிரதி செய்து வைத்துக் கொள்ளும் சிவிஎஸ்.

இப்போது ரவி என்பவர் வேலைக்கு வந்தால் அந்த மத்திய பிரதியிலிருந்து ஒரு பிரதியை தனது கணினிக்குக் கொண்டு வருமாறு (checkout) கட்டளை கொடுப்பார். அவருடைய அடைவில் எல்லா கோப்புகளும் மேலே இருக்கும் அதே அமைப்பில் பிரதி செய்யப்பட்டு விடும்.

ரவி order_entry.php என்ற கோப்பில் மாறுதல்கள் செய்கிறார். மாறுதல்கள் எல்லாம் அவரது பிரதியில்தான் நடக்கும். மத்திய பிரதியில் எந்த மாறுதலும் இல்லை.

இந்த நேரத்தில் தேவி என்பவர் தனக்கென ஒரு பிரதி வேண்டினால் ரவி செய்த மாறுதல்கள் சேராத கோப்புகள்தான் கிடைக்கும். தேவியும் வேலையை ஆரம்பித்து விடலாம். இதே போல் எத்தனை பேர் வேண்டுமானாலும் தனித்தனி பிரதிகள் எடுத்து வேலை செய்து கொண்டிருக்கலாம்.

தேவி தன் வேலையை முடித்து மாறுதல்கள் எல்லாம் சரிவர வேலை செய்கின்றன என்று சரிபார்த்து விட்டு அந்த மாற்றங்களை மத்திய பதிப்பில் சேர்க்க (commit) விரும்புகிறார். அவர் bill_entry.php என்ற கோப்பையும் order_entry.php என்ற கோப்பையும் மாற்றியிருக்கிறார் என்று வைத்துக் கொள்வோம்.

முதலில் தான் வேலை செய்து கொண்டிருந்த போது வேறு யாரும் மாற்றங்களை மத்திய பிரதியில் சேர்த்திருந்தால் அவற்றை தன் பிரதியில் புதுப்பித்துக் கொள்ள ஒத்திசைவு கட்டளையைக் (update) கொடுப்பார். இது வரை எதுவும் மாறியிருக்கவில்லை. தேவி தனது மாற்றங்களை மத்திய பிரதியில் சேர்க்க (commit) கட்டளை கொடுத்ததும். சிவிஎஸ் மத்திய பிரதிக்கும் தேவியின் பிரதிக்கும் இடையே ஒவ்வொரு கோப்புக்கும் என்னென்ன வேறுபாடுகள் உள்ளன என்று பார்த்து விட்டு தேவியின் மாறுதல்களை மத்திய பிரதியில் சேர்த்து விடும்.

இதற்குள் ரவியும் தனது வேலையை முடித்து விட்டார். அவர் order_entry.php என்ற கோப்பில் மாற்றங்கள் செய்துள்ளார். இப்போது மத்திய பிரதியையும் தனது பிரதியையும் ஒத்திசைக்க (update) கட்டளை கொடுத்தாரானால், தேவி மாற்றியிருந்த bill_entry.php ரவியின் பிரதிக்கும் வந்து விடும்.

ஆனால் order_entry.php என்ற கோப்பு மத்திய பிரதியிலும் மாறியிருக்கிறது. ரவியின் பிரதியிலும் மாறியிருக்கிறது. இப்போது சிவிஎஸ் பயன்பாடு இரண்டு கோப்புகளுக்குமிடையே என்ன வேறுபாடு என்று ஒவ்வொரு வரியாக ஒப்பிட்டுப் பார்க்கும். மாறுதல்கள் வெவ்வேறு வரிகளில் இருந்தால் மத்திய பிரதியின் மாறியுள்ள வரிகளை மட்டும் ரவியின் கோப்பில் மாற்றி விடும். ரவி செய்த மாறுதல்கள் அப்படியே இருக்கும்.

கடைசியாக ரவி தனது மாறுதல்களை மத்திய பிரதிக்கு அனுப்ப கட்டளை கொடுத்தால் தேவியின் மாற்றங்களையும், ரவியின் மாற்றங்களையும் உள்ளடக்கிய கோப்பு மத்திய பிரதிக்கு வந்து விடும். அடுத்த முறை தேவி அல்லது பிற ஊழியர்கள் ஒத்திசைக்கும் கட்டளை கொடுத்தால் இந்த பிரதி அவர்களுக்கும் போய்ச் சேர்ந்து விடும்.

முந்தைய பத்தியில் இரண்டு கோப்புகளிலும் ஒரே வரிகளில் மாறுதல்கள் இருந்தால் என்ன நடக்கும்? அதாவது தேவி மாற்றிய அதே வரியை ரவியும் மாற்றியிருக்கிறார், என்ன ஆகும்? அப்படி ஒரு நிலைமையைக் கண்டால் சிவிஎஸ் பயன்பாடு ரவி ஒத்திசைக்கும் போது அந்த விபரங்களைக் (conflict) காட்டி தேவியுடன் பேசி மாற்றங்களை ஒன்றையொன்று இடிக்காமல் சரி செய்து கொள்ளும் படி தகவல் கொடுக்கும்.

இந்த எளிய வழியைப் பயன்படுத்தி ஆயிரக்கணக்கானவர்கள் பல லட்சம் வரி நிரல் தொகுப்புகளில் ஒரே நேரத்தில் வேலை செய்ய முடிகிறது.

5 comments:

பாலராஜன்கீதா said...

// சிவிஎஸ் மத்திய பிரதிக்கும் தேவியின் பிரதிக்கும் இடையே ஒவ்வொரு கோப்புக்கும் என்னென்ன வேறுபாடுகள் உள்ளன என்று பார்த்து விட்டு தேவியின் மாறுதல்களை மத்திய பிரதியில் சேர்த்து விடும். //

பழைய கோப்பு தேவை எனில் கிடைக்குமா ? அதாவது பழைய வெர்ஷன் மற்றும் புது வெர்ஷன் என்ற இரு கோப்புகள் தனித்தனியாக இருக்குமா ?

நான் பணிபுரிந்த அலுவலகத்தில் பயன்படுத்தப்பட்ட Telelogic Synergy ( earlier CONTINUUS Change Management Tool ) என்ற நிரல் பராமரிப்பில் ஒரு கோப்பு பலமுறை மாற்றப்பட்டிருந்தாலும் அந்தச் சங்கிலியிலிருந்து தேவையான எந்த பதிப்பையும் காணலாம்.

MSATHIA said...

சூப்பர்.
கிளயர்கேஸ் உபயோகித்திருக்கிறீர்களா? பெரும் வணிக நிறுவனங்களுக்கு ஏற்றது.
இந்த மாதிரி பதிவுகளிம் வருகே மேன்மேலும் பெருக ஆசைப்படுகிறேன்.

மா சிவகுமார் said...

//பழைய கோப்பு தேவை எனில் கிடைக்குமா ? அதாவது பழைய வெர்ஷன் மற்றும் புது வெர்ஷன் என்ற இரு கோப்புகள் தனித்தனியாக இருக்குமா ? //

கிடைக்கும் பாலராஜன். பழைய பிரதிகளை பெற்றுக் கொள்ளும் வசதி நிரல் பராமரிப்புப் பயன்பாடுகளின் முக்கிய பண்பு.

சத்தியா,

கிளியர் கேஸ் பயன்படுத்தியதில்லை. இப்போது சப்வெர்ஷன் நிறுவிப் பயன்படுத்திக் கொண்டிருக்கிறேன். கொஞ்சம் நட்பு பூர்வமான சிவிஎஸ் போல இருக்கிறது.

//இந்த மாதிரி பதிவுகளிம் வருகே மேன்மேலும் பெருக ஆசைப்படுகிறேன்.//
நாம் எல்லாம் நமது பணிகளைப் பற்றி எழுத ஆரம்பித்தால் நிச்சயம் நடக்கும்.

அன்புடன்,
மா சிவகுமார்

Anonymous said...

why are you still behind VSS??

lot of open source and trust worthy tools already available in the market..

if you spent some money on configuration management you can buy good tools in the market like

Telelogic synergy (Configuration management ) + Telelogic Change ( Change Request managment)

or

IBM Clear Quest

before using any tools we should have good organization flow...

a simple example :-

most commonly used files like resourseBundle..or your organisation specific name (this kind of files used to pass the captions strings like company name ,field name during run time) should placed in a manner to ask for merging all the times..

and use insulation or dynamic devlopment..

it would update all the views connected to any stream automatically..

say for example any change in base classes would get updated in the all the customer specific projects.

no need to check out and check in all the projects..

மா சிவகுமார் said...

தகவல்களுக்கு நன்றி அருண். இப்போது எங்கள் நிரல் பராமரிப்பு முறையை மாற்றி வடிவமைத்துக் கொண்டிருக்கிறேன். உங்கள் கருத்துக்கள் மிக்க உதவியாக இருக்கும்.

அன்புடன்,
மா சிவகுமார்