Habaynta isticmaalayaasha badan ee gelitaanka serverka GIT

Marka la rakibo oo la habeeyo server-ka Git, su'aashu waxay soo baxaysaa abaabulka gelitaanka dhowr isticmaaleyaal dhowr mashruuc. Waxaan baadhay arrinta oo waxaan helay xal buuxiyey dhammaan shuruudahayga: fudud, ammaan ah, la isku halayn karo.

Rabitaankaygu waa:

  • Isticmaale kastaa wuxuu ku xiraa akoonkiisa
  • Isticmaalayaal dhowr ah ayaa ka shaqayn kara hal mashruuc
  • isla isticmaale ayaa ka shaqayn kara mashruucyo badan
  • Isticmaale kastaa wuxuu heli karaa oo keliya mashaariicda uu ku shaqeeyo
  • Waa inay suurtowdo in lagu xidho khadka taliska, oo aan lagu xidhin nooc ka mid ah interface-ka shabakadda

Waxa kale oo ay noqon doontaa mid weyn:

  • u oggolow akhri-kaliya dadka xakamaynaya
  • Si ku habboon u maamul xuquuqda gelitaanka isticmaalaha gudaha Git

Dulmarka fursadaha suurtagalka ah ee gelitaanka serverka GIT

Marka hore, waxaad u baahan tahay inaad ogaato waxaad ka dooranayso, markaa halkan waa dulmar degdeg ah oo ku saabsan borotokoolka Git.

  • ssh - akoon isticmaale oo si gaar ah loo sameeyay ayaa loo isticmaalaa si loo galo serverka.
    • Waxaa la yaab leh in Git uusan ka saarin talooyinkeeda isticmaalka hal akoon si loo galo dhammaan meelaha kaydka ah. Tani gabi ahaanba kama buuxin shuruudahayga.
    • Waxaad isticmaali kartaa xisaabaadyo badan, laakiin sidee ayaad u xaddidi kartaa gelitaanka isticmaalaha hagayaasha qaarkood?
      • Xiritaanka tusaha guriga kuma habboona, sababtoo ah way adag tahay in la habeeyo gelitaanka qoraalka halkaas ee isticmaalayaasha kale
      • Isticmaalka calaamadaha hagaha gurigaaga sidoo kale waa adag tahay sababtoo ah Git uma tarjumo xiriiriyayaal
      • Waa suurtogal in la xaddido gelitaanka turjubaanka, laakiin ma jirto dammaanad buuxda oo ah inay mar walba shaqaynayso
        • Guud ahaan waxaad ku xidhi kartaa turjubaanka amarkaaga isticmaalayaasha noocaas ah, laakiin
          • Marka hore, tani waa nooc ka mid ah go'aan adag,
          • Marka labaadna, tani waa la hareer marin karaa.

    Laakiin waxaa laga yaabaa inaysan dhibaato ahayn in isticmaaluhu uu awood u yeelan doono inuu fuliyo amar kasta? Habkan dib ayaan ugu soo laaban doonaa, laakiin hadda waxaan si kooban u tixgelin doonaa beddelka kale, waxaa laga yaabaa inay jiraan wax ka fudud.

  • Hab-maamuuska maxalliga ah ee git waxaa loo isticmaali karaa marka lagu daro sshfs, isticmaaleyaal badan ayaa la isticmaali karaa, laakiin asal ahaan la mid ah kiiskii hore
  • http - akhri-kaliya
  • git waa akhris-kaliya
  • https - ay adag tahay in la rakibo, waxaad u baahan tahay software dheeraad ah, nooc ka mid ah guddiga kontoroolka si loo habeeyo marin u helka isticmaalaha... waxay u muuqataa mid macquul ah, laakiin si uun wax walba waa adag yihiin.

Isticmaalka borotokoolka ssh si loo abaabulo isticmaaleyaal badan oo gelitaanka serverka Git

Aan ku soo laabano borotokoolka ssh

Maadaama aad u isticmaasho gelitaanka ssh ee git, waxaad u baahan tahay inaad hubiso amniga xogta serverka. Isticmaalaha ku xira ssh wuxuu isticmaalaa login u gaar ah server-ka Linux, si ay ugu xirmaan macmiilka ssh oo ay u galaan khadka taliska ee server-ka.
Ma jiro difaac dhammaystiran oo ka hortagaya gelitaanka noocaas ah.

Laakiin isticmaaluhu waa inuusan xiisayn faylasha Linux. Macluumad muhiim ah waxa lagu kaydiyaa oo keliya kaydka git Sidaa darteed, suurtagal maaha in la xaddido gelitaanka khadka taliska, laakiin isticmaalka qalabka Linux si looga mamnuuco isticmaalaha inuu daawado mashaariicda, marka laga reebo kuwa uu ka qaybqaato.
Doorashada cad waa in la isticmaalo nidaamka oggolaanshaha Linux.

Sidii horeba loo sheegay, waxaa suurtagal ah in loo isticmaalo hal akoon oo keliya gelitaanka ssh. Qaabayntan waa mid aan badbaado u ahayn isticmaaleyaal dhowr ah, in kasta oo lagu daray liiska xulashooyinka git ee lagu taliyey.

Si loo fuliyo shuruudaha lagu sheegay bilowga maqaalka, qaab dhismeedka hagaha soo socda ayaa la abuuray iyadoo loo xilsaaray xuquuqda iyo milkiilayaasha:

1) tusaha mashruuca

dir1 (proj1:proj1,0770)
dir2 (proj2:proj2,0770)
dir3 (proj3:proj3,0770)
...
halkaas oo
dir1, dir2, dir3 - hagaha mashruuca: mashruuca 1, mashruuca 2, mashruuca 3.

proj1:proj1, proj2:proj2, proj3:proj3 si gaar ah ayaa loo sameeyay isticmaalayaasha Linux kuwaas oo loo qoondeeyay mulkiilayaasha hagayaasha mashruuca ee u dhigma.

Ogolaanshaha dhammaan hagayaasha waxa lagu dejiyay 0770 - gelitaanka buuxda ee mulkiilaha iyo kooxdiisa iyo mamnuucid buuxda oo qof kasta oo kale ah.

2) xisaabaadka horumariyaha

Разработчик 1: dev1:dev1,proj1,proj2
Разработчик 2: dev2:dev2,proj2,proj3

Qodobka ugu muhiimsan waa in horumariyayaashu loo qoondeeyay koox dheeraad ah oo ah milkiilaha nidaamka isticmaalaha mashruuca u dhigma. Tan waxaa sameeya maamulaha serverka Linux oo wata hal amar.

Tusaalahan, "Developer 1" waxa uu ka shaqaynayaa mashaariicda proj1 iyo proj2, iyo "Developer 2" waxa uu ka shaqaynayaa mashaariicda proj2 iyo proj3.

Haddii mid ka mid ah horumariyayaashu ay ku xidhmaan ssh iyada oo loo marayo khadka taliska, markaa xuquuqdoodu kuma filna xitaa inay arkaan waxa ku jira hagaha mashruuca oo aanay ka qayb qaadan. Kan laftiisa ma beddeli karo.

Maadaama saldhigga mabda'aani yahay amniga aasaasiga ah ee xuquuqda Linux, nidaamkani waa mid la isku halayn karo. Intaa waxaa dheer, nidaamka waa mid aad u fudud in la maamulo.

Aan u gudubno ku celcelinta.

Abuuritaanka kaydka Git ee server Linux ah

Aan hubinno.

[root@server ~]# cd /var/
[root@server var]# useradd gitowner
[root@server var]# mkdir gitservertest
[root@server var]# chown gitowner:gitowner gitservertest
[root@server var]# adduser proj1
[root@server var]# adduser proj2
[root@server var]# adduser proj3
[root@server var]# adduser dev1
[root@server var]# adduser dev2
[root@server var]# passwd dev1
[root@server var]# passwd dev2

Waan ka daalay wax ku qorida gacanta...

[root@server gitservertest]# sed "s/ /n/g" <<< "proj1 proj2 proj3" | while read u; do mkdir $u; chown $u:$u $u; chmod 0770 $u; done

[root@server gitservertest]# usermod -aG proj1 dev1
[root@server gitservertest]# usermod -aG proj2 dev1
[root@server gitservertest]# usermod -aG proj2 dev2
[root@server gitservertest]# usermod -aG proj3 dev2

Waxaan ku qanacsanahay in aysan suurtagal ahayn in la galo meelaha dadka kale ee khadka taliska oo xitaa la eego waxa ku jira.

[dev1@server ~]$ cd /var/gitservertest/proj3
-bash: cd: /var/gitservertest/proj3: Permission denied
[dev1@server ~]$ ls /var/gitservertest/proj3
ls: cannot open directory /var/gitservertest/proj3: Permission denied

La shaqee horumariyayaal badan oo isla mashruuca Git ah

Hal su'aal ayaa weli ah, haddii hal horumariye uu soo bandhigo fayl cusub, markaa horumariyeyaasha kale ma beddeli karaan, sababtoo ah isaga qudhiisu waa milkiilaha (tusaale, dev1), oo ma aha milkiilaha isticmaalaha mashruuca (tusaale, proj1). Maadaama aan haysano kayd dhinaca server-ka ah, marka hore, waxaan u baahanahay inaan ogaano sida hagaha ".git" u habaysan yahay iyo haddii faylal cusub la abuuray.

Abuuritaanka kaydka Git ee maxalli ah iyo ku riixida serverka Git

Aan u gudubno mashiinka macmiilka.

Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:gittest>git init .
Initialized empty Git repository in C:/gittest/.git/

C:gittest>echo "test dev1 to proj2" > test1.txt

C:gittest>git add .

C:gittest>git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test1.txt

C:gittest>git commit -am "new test file added"
[master (root-commit) a7ac614] new test file added
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt
 
C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>git push origin master
dev1:[email protected]'s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes | 243.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://10.1.1.11/var/gitservertest/proj2
 * [new branch]      master -> master

C:gittest>

Isla mar ahaantaana, faylal cusub ayaa lagu abuuray server-ka, waxaana iska leh isticmaalaha sameeyay riixista

[dev1@server proj2]$ tree
.
├── 1.txt
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── 75
│   │   └── dcd269e04852ce2f683b9eb41ecd6030c8c841
│   ├── a7
│   │   └── ac6148611e69b9a074f59a80f356e1e0c8be67
│   ├── f0
│   │   └── 82ea1186a491cd063925d0c2c4f1c056e32ac3
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

12 directories, 18 files
[dev1@server proj2]$ ls -l objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
-r--r--r--. 1 dev1 dev1 54 Jun 20 14:34 objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
[dev1@server proj2]$

Markaad isbeddel ku dhejiso server-ka Git, faylal dheeri ah iyo hagayaal ayaa la abuurayaa, milkiilayaashoodana dhab ahaantii waa isticmaalaha wax soo geliya. Laakiin markaa kooxda faylalkaas iyo hagayaasha sidoo kale waxay u dhigmaan kooxda ugu weyn ee isticmaalahan, taas oo ah, kooxda dev1 ee isticmaalaha dev1 iyo kooxda dev2 ee isticmaalaha dev2 (beddelka kooxda ugu weyn ee adeegsadaha horumariyaha ma caawin doono, sababtoo ah markaa sidee ayaad uga shaqayn kartaa mashaariic badan?). Xaaladdan oo kale, isticmaalaha dev2 ma awoodi doono inuu beddelo faylasha uu sameeyay isticmaalaha dev1, taas oo horseedi karta burbur ku yimaada shaqada.

Linux chown - beddelka milkiilaha faylka isticmaale caadi ah

Milkiilaha feylku ma beddeli karo lahaanshihiisa. Laakiin wuu bedeli karaa kooxda faylka uu isagu leeyahay, ka dibna faylkan waxaa wax ka beddeli kara isticmaalayaasha kale ee isku kooxda ah. Taasi waa waxa aan u baahanahay.

Isticmaalka Git hook

Hagaha shaqada ee jillaabku waa buugga xididka ee mashruuca. jillaabku waa mid la fulin karo oo ka hoos shaqeeya isticmaalaha samaynta riixitaanka. Anagoo og tan, waxaan fulin karnaa qorshayaashayada.

[dev1@server proj2]$ mv hooks/post-update{.sample,}
[dev1@server proj2]$ sed -i '2,$ s/^/#/' hooks/post-update
[dev1@server proj2]$ cat <<< 'find . -group $(whoami) -exec chgrp proj2 '"'"'{}'"'"' ;' >> hooks/post-update

ama kaliya

vi hooks/post-update

Aan ku soo laabano mashiinka macmiilka.

C:gittest>echo "dev1 3rd line" >> test1.txt

C:gittest>git commit -am "3rd from dev1, testing server hook"
[master b045e22] 3rd from dev1, testing server hook
 1 file changed, 1 insertion(+)

C:gittest>git push origin master
dev1:[email protected]'s password:
   d22c66e..b045e22  master -> master

Seerfarka Git, waxaanu ku hubinayna hawlgalka qoraalka dib u cusboonaysiinta ka dib ballan-qaadka

[dev1@server proj2]$ find . ! -group proj2

- madhan, wax walba waa fiican yihiin.

Ku xidhida horumariyaha labaad ee Git

Aynu ku ekaano shaqada horumariyaha labaad.

On macmiilka

C:gittest>git remote remove origin

C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>echo "!!! dev2 added this" >> test1.txt

C:gittest>echo "!!! dev2 wrote" > test2.txt

C:gittest>git add test2.txt

C:gittest>git commit -am "dev2 added to test1 and created test2"
[master 55d49a6] dev2 added to test1 and created test2
 2 files changed, 2 insertions(+)
 create mode 100644 test2.txt

C:gittest>git push origin master
[email protected]'s password:
   b045e22..55d49a6  master -> master

Isla mar ahaantaana, server-ka ...

[dev1@server proj2]$ find . ! -group proj2

- maran mar kale, wax walba waa shaqeeyaan.

Tirtirka mashruuca Git iyo ka soo dejinta mashruuca server-ka Git

Hagaag, waxaad mar kale hubin kartaa in dhammaan isbeddellada la keydiyay.

C:gittest>rd /S /Q .
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

- si aad u tirtirto mashruuca Git, si fudud u nadiifi tusaha gabi ahaanba. Aan u dulqaadno qaladka soo baxay, maadaama aysan suurtagal ahayn in la tirtiro buugga hadda jira iyadoo la adeegsanayo amarkan, laakiin tani waa sida saxda ah ee aan u baahanahay.

C:gittest>dir
 Содержимое папки C:gittest

21.06.2019  08:43    <DIR>          .
21.06.2019  08:43    <DIR>          ..

C:gittest>git clone ssh://[email protected]/var/gitservertest/proj2
Cloning into 'proj2'...
[email protected]'s password:

C:gittest>cd proj2

C:gittestproj2>dir
 Содержимое папки C:gittestproj2

21.06.2019  08:46    <DIR>          .
21.06.2019  08:46    <DIR>          ..
21.06.2019  08:46               114 test1.txt
21.06.2019  08:46                19 test2.txt
C:gittestproj2>type test1.txt
"test dev1 to proj2"
"dev1 added some omre"
"dev1 3rd line"
"!!! dev2 added this"

C:gittestproj2>type test2.txt
"!!! dev2 wrote"

Wadaagista gelida Git

Hadda aan hubinno in xitaa iyada oo loo marayo Git horumariyaha labaad uusan heli karin mashruuca Proj1, kaas oo uusan ku shaqeyneynin.

C:gittestproj2>git remote remove origin

C:gittestproj2>git remote add origin "ssh://[email protected]/var/gitservertest/proj1"

C:gittestproj2>git push origin master
[email protected]'s password:
fatal: '/var/gitservertest/proj1' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Hadda waxaan ogolnahay gelitaanka

[root@server ~]# usermod -aG proj1 dev2

intaas ka dib wax walba way shaqeeyaan.

C:gittestproj2>git push origin master
[email protected]'s password:
To ssh://10.1.1.11/var/gitservertest/proj1
 * [new branch]      master -> master

Wixii macluumaad dheeraad ah,

Intaa waxaa dheer, haddii ay dhibaato ka jirto oggolaanshaha caadiga ah marka la abuurayo faylasha iyo hagayaasha, CentOS waxaad isticmaali kartaa amarka

setfacl -Rd -m o::5 -m g::7 /var/gitservertest

Sidoo kale maqaalka waxaad ku turunturoon kartaa waxyaabo yaryar oo faa'iido leh:

  • sida loo dhiso geed directory gudaha Linux
  • sida loogu gudbiyo cinwaano kala duwan oo sed ah laga bilaabo xariiq gaar ah ilaa dhamaadka faylka, taas oo ah, samee beddelka sed dhammaan sadarrada marka laga reebo xariiqda koowaad
  • Sida loo rogo xaalad raadinta gudaha Linux Find
  • Sida xadadka badan loogu dhaafo loop iyadoo la isticmaalayo hal-liner gudaha qolofta Linux
  • Sida looga baxsado xigashooyinka hal-abuurka ah ee bash
  • sida loo tirtiro tusaha ay ku jiraan dhammaan waxa ku jira khadka taliska ee windows
  • Sida loo isticmaalo bash mv si dib loogu magacaabo faylka adoon dib u qorin mar kale

Waad ku mahadsan tahay dareenka.

Source: www.habr.com

Add a comment