அன்புடையீர் வணக்கம்
இந்த பதிவில் நாம் நிரலாக்கர்களின் இரண்டு பொதுவான செயல்பாடுகளை தானியங்க வைப்போம்.
நம்மிடம் பல Git கணக்குகள் இருக்கும் நிலையில் ஒரே கணினியில் இருந்து,
1. பயனர்பெயர், கடவுச்சொல் உள்ளீடு தானகவே நடத்தும்படி இயக்குவது.
2. பயனர் பெயர் மற்றும் மின்னஞ்சல் முகவரி repository கு ஏற்றவாறு அமைத்தல்
நிரலாக்கர்கள் தன்னுடைய தினம்தோறும் கடமையில் Version Control System யில், அன்றைய தினத்தின் நிரல் புதுப்பிப்புகளை புதுப்பிப்பார்கள். Github , Gitlab , Bitbucket போன்ற தளங்கள், வெளி repository காண Version Control System சேவை வழங்குவதில் பிரபலமானவை. இந்த repository-கள் 1) Public – எவர் வேண்டுமானாலும் காணலாம் அல்லது 2) private – அங்கீகரிக்க பட்ட பயனர்கள் மற்றும் காணலாம், ஆக இருக்கும்.
சரி Git யில் பயன்படுத்தபடும் /நடத்தப்படும் பொது செயல்பாடுகள்.
1) git push – தன்னுடைய புதுப்பிற்புகளை பதிவேற்றல்
2) git pull – பிற பங்களிப்போரின் புதுப்பிற்புகளை பெற்றுக்கொள்ளுதல்
3) git clone – முதல் முறையாக ஒரு repository யை தன்னுடைய கணினி கு பதிவிறக்கம் செய்தல்
ஒரு repository எந்த தனியுரிமை முறையில் இருந்தாலும் (Private அல்லது Public), git push செய்யும் பொது பயனர் பெயர் மற்றும் கடவு சொல் வினவப்படும்.
இந்த நிகழ்வு ஒரே நாளில் பலமுறை தேவைப்படும். ஆகவே, இந்த பயனர் பெயர் மற்றும் கடவு சொல் உள்ளீடை நாம் தானியங்க செய்யலாம். அதற்கு SSH keys களை பயன்படுத்தி, நாம் தானியங்க செய்யலாம்.
SSH முறையில், பயனர் தனக்கான Private மற்றும் Public key களை உருவாக்குவார்கள். உருவாக்கப்பட்ட Public key யினை தொலை repository சேவை புரிவோரிடம் பதியப்படவேண்டும். அவ்வாறு செய்த பின், பயனர் பெயர் மற்றும் கடுவுசொல் உள்ளீடு முழுமையாக தானியங்கபடும்.
மேலும் SSH உள்ளமைக்கும் விவரங்களை Github -ற்கு இங்கே பார்க்க Gitlab ற்கு இங்கே.
சரி இப்பொழுது நாம் SSH Keys களை உருவாக்கிவிட்டோம் என்று வைத்துக்கொள்ளுங்கள். நாம் git push செய்யும் பொது, வேண்டிய SSH key ஆனது சம்மந்தப்பட்ட கோப்புகளில் (~/.ssh/… ) இருக்கின்றனவா என சரிபார்க்க பட்ட பின்னர் இயங்கும்.
சரி நம்மிடம் பல Git சேவை புரிவோர் கணக்கு இருந்தால் !!!
* முன்நிபந்தனை : ஒருமுறை முழுமையாக இந்த இணைப்பை help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh, படித்த பின்னர் தொடரவும் .
நம்மிடம் பல கணக்குகள் இருக்கும் பொழுது ,
1) அணைத்து கணக்கிற்கும் ஒரே SSH Private மற்றும் Public Key பயன்படுத்துவது, பயனர் மின்னஞ்சல் ஒன்றாக இருக்கும் பட்சத்தில்.
2) ஒவ்வொரு கணக்கிற்கும் ஒரு SSH Key களை உருவாக்கி, அதற்கேற்றவாறு சில அமைப்புகளை மற்ற வேண்டும்
முன்னெச்சரிக்கை
ஒரே SSH key யை பல கணக்கிற்கு பயன்படுத்தலாமா ?
ஒருவேளை எப்படியோ நம் SSH Key ஆனது திருடப்பட்டால் , அணைத்து கணக்குகளும் திருடப்பட வாய்ப்பு இருக்கிறது. எனவே இதனை பின்பற்றுவது சிறந்த முறையன்று.
நாம் SSH Key மற்றும் கணக்குகளை இணைக்க வேண்டும். அவற்றை செய்வது பின்வருமாறு.
இந்த கட்டளையை தட்டச்சி செய்க
ls ~/.ssh/
பின்வரும் கோப்புகள் காட்டப்படுவதாக கற்பனை செய்து கொள்ளுங்கள்.
id_rsa_github id_rsa_github.pub
id_rsa_gitlab id_rsa_gitlab.pub
id_rsa_gitlab_work id_rsa_gitlab_work.pub
* உங்கள் கணினியில் பல கோப்புகள் வரலாம்.
கோப்புகள் பற்றின குறிப்புகள்:
இந்த கோப்புகள் அனைத்தும் ssh-keygen கருவி மூலம் பெறப்பட்டவை. முன்நிபந்தனை இணைப்பை ஒருமுறை வாசிக்க.
Private Keys:
id_rsa_github, id_rsa_gitlab,id_rsa_gitlab_work
Public Keys:
id_rsa_github.pub, id_rsa_gitlab.pub, d_rsa_gitlab_work.pub
இப்பொழுது அனைத்தையும் ஒரு பிரதி எடுத்து கொள்வோம்.
cp ~/.ssh/config ~/.ssh/config_bkp
பிரதி எடுத்த பின்னர் பின்வருமாறு அதனை மாற்றவும்
Host PUBLIC_GITHUB
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
Host PUBLIC_GITLAB
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
Host WORK_GITLAB_WORK
Hostname work.gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab_work
host கும் hostname கும் ஆனா தொடர்பு/அர்த்தங்களை இங்கே காண்க.
இப்பொழுது நாம் அமைக்க பட்ட Git கணக்கிலிருந்து, clone/push/pull செய்தொமேயானால் அதற்கான hostname அடையாளம் காணப்பட்டு அந்த hostname ற்கான SSH Key காண கோப்பை பார்த்து, பயனர் அடையாளம் காணப்படுவர்.
!! நாம் Manual ஆ உள்ளீடு செய்ய வேண்டிய பயனர் பெயர் மற்றும் கடவுச்சொல் பனி ஆனது முற்றிலும் தானியங்க பட்டது.
அடுத்த பிரச்சனையா பார்ப்போம்
Repository கு ஏற்றவாறு பயனர் பெயர் மற்றும் மின்னஞ்சலை தரப்படுத்துதல்
நாம் ஒரு repository யை clone செய்த பிறகு, சில புதுப்பித்தலை செய்த பிறகு commit செய்வோம். ஒரு கணினியில் முதன் முறையாக இவற்றை செய்யும் பொழுது(global setting செய்யாது இருப்பின்) நமக்கு ஒரு எச்சரிக்கை “user name and email id is not configured” வரும்.
எந்த repository ஆகினும் , நாம் பொதுவான (global) பயனர் பெயர் மற்றும் மின்னஞ்சலை அமைத்து கொள்ளலாம்.
தற்போது அமைக்க பட்டு இருக்கும் பொது பெயர் மற்றும் மின்னஞ்சலை காண , இந்த கட்டளையை இடுக்குக .
git config –global user.email
git config –global user.name
ஒரு repository clone செய்தவுடன் பயனர் பெயர் மற்றும் மின்னஞ்சல் அமைத்தல் பணியை Global ஆகா செய்யும் பொழுது , நாம் commit வரலாற்றை ஆய்வு செய்யும் பொழுது சற்று அதிக பெயர்களை அடையாளமாக காட்டும்.
எனவே, repository அளவில் நாம் பயனர் பெயர் மற்றும் மின்னஞ்சல் அமைத்தலை செய்ய வேண்டும் .
Git யில் நமக்கு hook என்ற வசதி உள்ளது.
நாம் பயனர் பெயர் மற்றும் மின்னஞ்சலை ஒரு repository யுடன் அமைக்க, ஒரு script/நிரலை எழுதவேண்டும். அந்த Script ஆனது எப்பொழுதெல்லாம் ஒரு கணினியில் ஒரு repository கு முதன் முறையாக clone நடக்கிறதோ , அப்பொழுது அந்த config அமைக்க படவேண்டும். அதுவும் வெவ்வேறு Git கணக்குகளுக்கும் config தனியியங்கியாக அமைக்கப்படவேண்டும்.
அதற்கான வழியை காணாலாம்.
வழிகள்:
1. ~/.gitconfig கோப்பை பிரதி எடுக்கவும்.
cp ~/.gitconfig ~/.gitconfig_bkp
2. இந்த கோப்பை edit செய்யவும். nano ~/.gitconfig. தங்களுக்கு ஏற்ற மதிப்புகளை தட்டச்சி செய்யவும்
[init]
templatedir = ~/.git/templates
name = github_username
email = github_email_id
name = gitlab_username
email = gitlab_email_id
name = github_username_work
email = github_email_id_work
name = gitlab_username_work
email = gitlab_email_id_work
useConfigOnly = true
3. பின்வருமாறு hook script யை உருவாக்குக.
~/.git/templates/hooks/post-checkout
Script காண மூலம் இங்கிருந்து பெறுக.
4. இங்கே மேற்கோள் செய்த இடத்தில், தங்களுக்கு ஏற்றவாறு host names யை தனிப்பயனாக்குக.
5. Hook script யில் உள்ள Host namesம், git config கோப்பில்[….] உள்ள – பெயர் ஒன்றாக இருக்க வேண்டும்.
6. ஒரு repository யை clone /pushயை இப்பொழுது பரிசோதனை செய்து பாருங்கள்.
ஆங்கில மொழி பெயர்ப்பை இங்கே காண்க.
குறிப்புகள்:
-
stackoverflow.com/questions/4220416/can-i-specify-multiple-users-for-myself-in-gitconfig
-
www.freecodecamp.org/news/manage-multiple-github-accounts-the-ssh-way-2dadc30ccaca/
-
medium.com/@trionkidnapper/ssh-keys-with-multiple-github-accounts-c67db56f191e
-
mobiosolutions.com/how-to-manage-multiple-accounts-using-ssh-key-in-github/
நன்றி !
ராஜேஷ்குமார் பொதியப்பன்