கிட் – Distributed Revision Control System
கிட் என்பது ஒரு திருத்தக் கட்டுப்பாடு அல்லது பதிப்புக் கட்டுப்பாடு மென்பொருள் [ Version Control System ] . இது பரவிலான திருத்தக் கட்டுபாடு ஒருங்கியத்தைக் கொண்டது, அதாவது Distributed Revision Control System. இதை பல கட்டற்ற மென்பொருள்களின் மூலங்களை பராமரிக்க பயன்படுகிறது. கிட்டில் உள்ள முக்கியமான அடிப்படை கமெண்டுகள் மற்றும் அதன் பயன்பாடுகள் இக்கட்டுரையில் இடம்பெற்றுள்ளன.
கிட் நிறுவதல்
கிட்டை உபண்டு கணினியில் நிறுவ, கமென்ட் லைன் திறந்து
sudo apt-get install git-core என டைப் செய்யவும்.
விண்டோசில் பயன்படுத்த அதற்க்கான கோப்பை code.google.com/p/msysgit/downloads/list எனும் வலைபக்கத்தில் இருந்து பதிவிறக்கி நிறுவவும்.
புது கிட் ப்ராஜக்ட்டை துவங்குதல்
துவங்கப்படும் புது ப்ராஜக்ட்டை ஒரு கிட் ப்ரொஜெக்ட்டாக துவங்கலாம் அல்லது ஏற்கனவே இருக்கும் ஒரு ப்ராஜக்ட்டை கிட் ப்ராஜெக்ட் ஆக்கலாம். அதற்க்கு உங்கள் ப்ராஜெக்டின் மூலம், source, முழுவதும் ஒரே டைரக்டரியில் இருக்க வேண்டும்.
குறிப்பு: கொடுக்கபட்டுள்ள கமேண்டுகள் அனைத்தும் “Terminal”இல் அடிக்க வேண்டியவை. விண்டோஸ் பயனாளர்கள் கிட்டுடன் வரும் கிட் பேஸ் (git bash)
புது ப்ராஜெக்ட் எனில் அதற்கான டைரக்டரியை முதலில் உருவாக்கவும். எற்கனவே இருக்கும் ப்ராஜக்ட் எனில் இது தேவையில்லை.
mkdir project
உங்கள் ப்ராஜக்ட் டைரக்டரிக்குள் நுழையுங்கள்
cd project
அந்த ப்ராஜெக்ட்டை ஒரு கிட் ரெப்போவாக மாற்ற
git init
என டைப் செய்யுங்கள். அதற்கு
Initialized empty Git repository in /home/user/project/.git/
என பதில் வரும். இப்பொழுது உங்கள் ப்ராஜெக்ட் ஒரு கிட் ரெப்போவாக(repo or repository) நிறுவப்பட்டுவிட்டது. “.git” எனும் டைரக்டரி உங்கள் project டைரக்டரியில் உருவாக்கப்பட்டு அதனுள் எல்லா கிட் சார்பான விசயங்களும் சேமிக்கப்படும். எப்பொழுதாவது கிட் தேவையில்லை எனில் “.git” டைரக்டரியை மட்டும் உங்கள் project டைரக்டரியிலிருந்து நீக்கினால் மட்டும் போதும்.
git init மூலமாக எந்த ஒரு டைரக்ட்டரியையும் ஒரு கிட் ரெப்போவாக மாற்றி அதனுள் உள்ள கோப்புகளை பதிப்புக்கட்டுப்பாட்டுக்குள் (version control) கொண்டு வரலாம். ஒரு நண்பர் தான் எழுதும் கவிதைத்தொகுப்புகளை கிட் பயன்படுத்தி பராமரித்து வருகிறார்.
இதுவே வேறு ஒருவர் ஒரு கிட் ரெப்போ வைதிருக்கிறார், அது உங்களுக்கு வேண்டும் என்றால், அதற்கு git clone என்ற கமேண்ட் உதவும்.
git clone /path/to/repo
இதில் /path/to/repo என்பது கணினியில் உள்ள ஒரு கிட் டைரக்டரியாகவோ அல்லது இணையத்தின் மூலம் தரவிறக்கம் செய்ய கிட் சுட்டியாக இருக்கலாம். இது மற்றவர்களின் ப்ராஜெக்ட்டுகளில் இணைந்து செயல்பட உதவும் ஒரு கமேண்ட் ஆகும்.
அடிப்படை பதிப்புசார் கமேண்டுகள்
இப்பொழுது நமது project எனும் புது ப்ராஜெக்ட்டில் main.cpp மற்றும் functions.cpp என இரண்டு கோப்புகள் மட்டும் இருக்கிறது என வைத்துக்கொள்வோம். main.cpp `#include <stdio.h>` எனும் வரியையும் functions.cpp `#include<iostream>` என்ற வரியையும் மட்டும் கொண்டுள்ள கோப்புகள். இவைகளை கிட்டின் பார்வைக்குக்கீழ் கொண்டு சென்றால்தான் பதிப்புக்கட்டுபாடு செய்யமுடியும்.
நமது ரெப்போவின் நிலைமையரிய git status கமேண்டு பயன்படுத்தலாம். git status -s என இப்பொழுது கமேண்டு கொடுத்தால்
?? functions.cpp
?? main.cpp
என பதில் வரும், இதற்கு ரெப்போவில் உள்ள கோப்புகள் functions இரண்டும் இன்னும் கிட்டின் பார்வைக்குக்கீழ் அல்லது கண்காணிப்பில் இல்லை என அர்த்தம். நமது ப்ராஜக்ட் டைரக்டரியில் உள்ள கோப்பை கிட்டின் பார்வைக்குக்கீழ் வைக்க git add எனும் கமேண்டை பயண்படுத்தலாம்.
git add .
என்று கொடுத்தால் அதற்க்கு இந்த டைரக்டரியில் உள்ளா எல்ல கோப்புகளையும் கிட்டின் பார்வைக்குகீழ் வைப்பதாக பொருள். அல்லது ஒரு குறிப்பிட்ட கோப்பை மட்டும் கிட்டின் பார்வையில் வைக்க, git add filename உபயோகிக்கலாம். இங்கு filename எனும் இடத்தில் உங்களுக்கு தேவையான கோப்புகளின் பெயர்களை கொடுக்கவும்.
git add . பின்பு நமது ரெப்போவின் நிலைமையை பார்ப்போம். மறுமுறை git status -s எனும் கமேண்ட் கொடுத்தால்
A functions.cpp
A main.cpp
என பதில் வருகிறது. அப்படியெனில் functions.cpp மற்றும் main.cpp ஆகிய இரண்டு கோப்புகளும் கிட்டின் பார்வையில் புதிதாக சேர்க்கப்பட்டுள்ளது என அர்த்தம். இதை ஒரு பதிப்பாக சேமிக்க git commit கமேண்ட் பயன்படுத்தலாம்.
git commit -a -m “first commit”
எனும் கமேண்டிற்கு
[master (root-commit) f872195] first commit
2 files changed, 4 insertions(+), 0 deletions(-)
create mode 100644 functions.cpp
create mode 100644 main.cpp
என்று பதில் வரும். இப்பொழுது நமது கோப்புகள் main.cpp மற்றும் functions.cpp ஆகிய இரண்டும் பதிப்பு சேமிக்கப்பட்டுள்ளன. இந்த கமேண்டில் “git commit” எனும் பாகம் ஒரு கிட் கமேண்ட். “-a” எனும் parameter, புதிதாக இந்த commitடில் கோப்புகள் சேர்க்கப்படுகின்றன என சொல்கிறது.”-m” எனும் parameter அடுத்து வருவது இந்த commitடிற்கான மெசேஜ் என சொல்கிறது. “first commit” எனும் பாகம்தான் -m குறிபிட்ட அந்த commit message. இரண்டு parameterகளையும் இனைத்து -am எனவும் குறிப்பிடலாம். “first commit” என்பதற்கு பதில் என்ன மெசேஜ் வேன்டுமானாலும் கொடுக்கலாம். அது உங்களை பொருத்தது.
இப்பொழுது git status -s கொடுத்தால் எந்த பதிலும் வராது. அப்படியெனில் நமது ரெப்போ சுத்தமாக உள்ளது, அதாவது எல்லா கோப்புகளும் அதில் உள்ளவைகளும் பதிப்பு பெற்று சேமிக்கப்பட்டுள்ளனு என அர்த்தம்.
இப்பொழுது நமது main.cpp எனும் கோப்பில் சிறிது மாற்றம் செய்துவிட்டோம் என வைத்துக்கொள்வோம். அதில் உள்ள `#include <stdio.h>` என்பதை எடுத்துவிட்டு, அதற்கு பதிலாக `#include <math.h>` என கொடுத்துவிட்டோம். அதாவது நமது ப்ரொஜெக்ட்டில் மாற்றங்கள் செய்துவிட்டோம்.
இப்பொழுது git status -s எனக்கொடுத்தால்
M main.cpp
எனக்காட்டும், இதற்கு main.cpp எனும் கோப்பு மாற்றம் அடைந்துள்ளது ஆனால் அந்த மாற்றம் இன்னும் பதிக்கப்படவில்லை அல்லது பதிப்பாக சேமிக்கப்படவில்லை என அர்த்தம்.
நாம் என்ன மாற்றம் செய்துள்ளோம் என அறிய git diff கமேண்ட்டை பயன்படுத்தலாம். git diff எனக்கொடுத்தால்
diff –git a/main.cpp b/main.cpp
index 10b222c..0472ffd 100644
— a/main.cpp
+++ b/main.cpp
@@ -1,2 +1,2 @@
-#include <stdio.h>
+#include <math.h>
என சொல்கிறது. அதாவது a,b என இரண்டு கோப்புகளுக்கும் இடையிலான வித்தியாசத்தை காண்பிக்கிறது. அதில் aவாக நாம் ஏற்க்கனவே பதித்து வைத்திருக்கும் main.cppயையும் bயாக இப்பொழுது நாம் மாற்றம் செய்து வைத்திருக்கும் main.cppயையும் கிட் எடுத்துக்கொண்டு அவைகளுக்கு இடையிலான வித்தியாசத்தை காண்பிக்கிறது. a கோப்பில் #include <stdio.h> நீக்கபட்டதை கழித்தல் குறியுடனும், b கோப்பில் #include <math.h> சேர்க்கப்பட்டதை கூட்டல் குறியுடனும் சொல்கிறது.
இந்த மாற்றங்களை commit செய்துவிட்டு காத்திருங்கள், அடுத்த மாதம் எப்படி கிட் கொண்டு ப்ரொஜெக்டுகளை இணையத்தில் போட்டு வைப்பது, மற்றவருகளுடன் பகிர்ந்து கொள்வது, மற்றும் மற்றவருகளுடன் இனைந்து செயல்படுவது எனப்பார்போம்.
மேலும் அறிய gitref.org என்ற இணையதளம் செல்லலாம்.
கணியம் ஆசிரியருக்கான பின்குறிப்பு: முடியலடா சாமி.. என்ன சார் கோவம் எங்க மேல? 4 1/2 மணி நேரமா மூச்சு தெனற தெணற அடிச்சேன்.. உசுரு போய் உசுரு வந்திரிச்சு … உஸ் யப்பா….
அருண்மொழி, சென்னை அண்ணா பல்கலைகழகத்தில் தொலைஉணர்வு (Remote Sensing ) முதுகலை பயிலும் மாணவர். கட்டற்ற மென்பொருள் சமாச்சாரங்களில் ஆர்வம் கொண்டவர்.
மின்னஞ்சல் : aruntheguy@gmail.com
வலை : www.arunmozhi.in/