A faʻapipiʻi ma faʻapipiʻi se Git server, e tulaʻi mai le fesili e uiga i le faʻatulagaina o avanoa mo le tele o tagata faʻaoga i le tele o poloketi. Sa ou suʻesuʻeina le mataupu ma maua se fofo e fetaui ma ou manaʻoga uma: faigofie, saogalemu, faʻalagolago.
O oʻu manaʻoga o:
- e fa'afeso'ota'i tagata ta'itasi ma a latou lava tala
- E mafai e le tele o tagata fa'aoga ona galulue i se poloketi e tasi
- e mafai e le tagata e tasi ona galue i le tele o galuega faatino
- e mafai e tagata ta'ito'atasi ona maua na'o poloketi na ia galue ai
- E tatau ona mafai ona faʻafesoʻotaʻi e ala i le laina faʻatonu, ae le naʻo se ituaiga o upega tafaʻilagi
O le a lelei foi:
- tu'u atu fa'atagaga na'o le faitau i tagata fa'atonutonu
- Fa'afaigofie ona pulea aia tatau a tagata fa'aoga ile Git
Va'aiga lautele o filifiliga talafeagai mo le fa'aogaina o le GIT server
Muamua lava, e tatau ona e iloa le mea e te filifili mai ai, o lea o se faʻamatalaga vave o Git protocols.
- ssh - o se faʻamatalaga faʻapitoa e faʻaaogaina e faʻaaogaina e faʻaoga ai le server.
- O se mea uiga ese e le faʻaesea e Git mai ana fautuaga le faʻaogaina o le tasi tala e faʻaoga uma ai faleoloa. E matua le fetaui lava lea mea ma ou mana'oga.
- E mafai ona e fa'aogaina tala e tele, ae fa'afefea ona fa'atapula'aina le avanoa a le tagata fa'aoga i na'o fa'amaumauga patino?
- O le tapunia i totonu o le lisi o fale e le talafeagai, aua e faigata ona faʻatulagaina avanoa tusitusi iina mo isi tagata faʻaoga
- O le faʻaaogaina o symlinks mai lau lisi o fale e faigata foi ona e le faʻamatalaina e Git o ni soʻotaga
- E mafai ona fa'atapula'aina le avanoa i le fa'aliliu upu, ae leai se fa'amautinoaga atoatoa o le a aoga i taimi uma
- E masani ona e fa'afeso'ota'i lau lava fa'aliliu upu mo ia tagata fa'aoga, ae
- muamua, o se ituaiga o filifiliga faigata lea,
- ma lona lua, o lenei mea e mafai ona alofia.
- E masani ona e fa'afeso'ota'i lau lava fa'aliliu upu mo ia tagata fa'aoga, ae
Ae atonu e le o se faʻafitauli e mafai e le tagata faʻaoga ona faʻatinoina soʻo se poloaiga?.. I se tulaga lautele, o lenei metotia e le mafai ona faʻamaonia pe afai e te iloa tonu pe faʻapefea ona faʻaaogaina. O le a tatou toe foi i lenei metotia mulimuli ane, ae mo le taimi nei o le a tatou mafaufau puupuu i isi auala, atonu o le ai ai se mea faigofie.
- O le git local protocol e mafai ona faʻaogaina faʻatasi ma sshfs, e tele tagata faʻaoga e mafai ona faʻaogaina, ae tutusa lava ma le mataupu muamua.
- http - na'o le faitau
- git e na'o le faitau
- https - faigata ona faʻapipiʻi, e te manaʻomia le polokalama faʻaopoopo, o se ituaiga o faʻatonuga e faʻatulaga ai le avanoa o tagata faʻaoga ... e foliga mai e mafai, ae i se isi itu e faigata mea uma.
Faʻaaogaina o le ssh protocol e faʻatulaga ai le tele o tagata faʻaoga avanoa i le Git server
Sei o tatou toe foʻi i le ssh protocol.
Talu ai o le ssh avanoa e faʻaaogaina mo git, e tatau ona e faʻamautinoa le saogalemu o faʻamaumauga a le server. O le tagata faʻaoga e faʻafesoʻotaʻi e ala i le ssh faʻaaogaina a latou lava saini i luga o le Linux server, ina ia mafai ona latou faʻafesoʻotaʻi e ala i le ssh client ma faʻaoga le laina faʻatonu a le server.
E leai se puipuiga atoatoa mai lea avanoa.
Ae e le tatau ona fiafia le tagata faʻaoga i faila Linux. O faʻamatalaga taua e teuina i totonu o le git repository. O le mea lea, e le mafai ona faʻatapulaʻaina le avanoa e ala i le laina faʻatonu, ae faʻaaoga meafaigaluega Linux e faʻasaina ai le tagata faʻaoga mai le matamataina o galuega faatino, e le aofia ai i latou o loʻo ia auai.
O le filifiliga manino o le faʻaaogaina o le Linux faʻatagaga faiga.
E pei ona taʻua muamua, e mafai ona faʻaaoga naʻo le tasi le tala mo le avanoa ssh. O lenei faʻatulagaga e le saogalemu mo le tele o tagata faʻaoga, e ui lava o loʻo aofia i le lisi o filifiliga git fautuaina.
Mo le faʻatinoina o manaʻoga o loʻo tuʻuina atu i le amataga o le tusiga, o le faʻatulagaina o faʻamaumauga o loʻo i lalo e faia ma le tuʻuina atu o aia tatau ma tagata e ona:
1) lisi o galuega faatino
dir1(proj1:proj1,0770)
dir2(proj2:proj2,0770)
dir3(proj3:proj3,0770)
...
le mea
dir1, dir2, dir3 - lisi o galuega faatino: poloketi 1, galuega faatino 2, galuega faatino 3.
proj1:proj1, proj2:proj2, proj3:proj3 o lo'o faia fa'apitoa tagata fa'aoga Linux o lo'o tofia e avea ma pule o fa'atonuga o galuega.
fa'atagaga mo fa'atonuga uma ua tu'u ile 0770 - avanoa atoatoa mo lē e ona ma lana vaega ma fa'asa atoa mo isi tagata uma.
2) fa'amatalaga fa'apitoa
Разработчик 1: dev1:dev1,proj1,proj2
Разработчик 2: dev2:dev2,proj2,proj3
O le mea autu o loʻo tuʻuina atu e le au atinaʻe se vaega faʻaopoopo o le tagata e ona le faʻaogaina o le polokalama tutusa. E faia lenei mea e le pule o le server Linux ma le poloaiga e tasi.
I lenei faʻataʻitaʻiga, "Developer 1" o loʻo galue i luga o poloketi proj1 ma proj2, ma "Developer 2" o loʻo galue i luga o poloketi proj2 ma proj3.
Afai e fesoʻotaʻi soʻo se tagata atiaʻe e ala i le ssh e ala i le laina o le faʻatonuga, o le a le lava a latou aia tatau e oʻo lava i le vaʻai i mea o loʻo i totonu o lisi o galuega latou te le auai. E le mafai e ia lava ona suia lenei mea.
Talu ai o le faavae o lenei mataupu faavae o le puipuiga faavae o aia tatau a Linux, o lenei polokalame e faatuatuaina. E le gata i lea, o le polokalame e matua faigofie lava ona faʻatinoina.
Sei o tatou agai i luma e faataitai.
Fausia faleteuoloa Git i luga ole server Linux
Matou te siaki.
[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
Ua ou fiu e ta i le lima...
[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
Matou te talitonu e le mafai ona faʻaogaina fale teu oloa a isi tagata mai le laina o le faʻatonuga ma vaʻai i latou mea.
[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
Galulue faʻatasi ma le tele o atinaʻe i luga o le poloketi tutusa i Git
E tasi le fesili e tumau, afai e faʻafeiloaʻi e se tasi tagata faʻapipiʻi se faila fou, ona le mafai lea e isi tagata atinaʻe ona suia, aua o ia lava e ona (mo se faʻataʻitaʻiga, dev1), ae le o le tagata e ona le poloketi (mo se faʻataʻitaʻiga, proj1). Talu ai o loʻo i ai le matou fale teu oloa, muamua lava, e tatau ona matou iloa pe faʻafefea ona faʻatulagaina le ".git" directory ma pe faia faila fou.
Fausia se faleoloa Git i le lotoifale ma tulei i le Git server
Se'i o tatou agai i luma ile masini a le kalani.
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>
I le taimi lava e tasi, o faila fou e faia i luga o le 'auʻaunaga, ma o latou a le tagata faʻaoga na faia le tulei
[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]$
A e tuʻuina atu suiga i le Git server, o faila faʻaopoopo ma faʻamaumauga e faia, ma o latou e ona o le tagata faʻaoga na te faia le faʻapipiʻi. Ae o le vaega o nei faila ma directories e tutusa foi ma le vaega autu o lenei tagata faʻaoga, o lona uiga, o le dev1 vaega mo le dev1 tagata faʻaoga ma le dev2 vaega mo le dev2 tagata faʻaoga (suia le vaega autu o le tagata faʻaoga tagata e le fesoasoani, aua e fa'afefea ona e galue i le tele o galuega faatino?). I lenei tulaga, o le a le mafai e le tagata faʻaoga dev2 ona suia faila na faia e le tagata faʻaoga dev1, lea e mafai ona taʻitaʻia ai le malepelepe o galuega.
Linux chown - suia le tagata e ona se faila e se tagata masani
E lē mafai e lē e ana le faila ona suia lona pule. Ae e mafai ona ia suia le vaega o se faila e ona ia, ona mafai lea ona suia lenei faila e isi tagata faʻaoga o loʻo i totonu o le vaega e tasi. O le mea lena tatou te manaʻomia.
Fa'aaoga le matau Git
O le tusi galue mo le matau o le a'a o le galuega. matau o se fa'atinoina lea e tamo'e i lalo o le tagata fa'aoga o lo'o faia le tulei. O le iloaina o lenei mea, e mafai ai ona tatou faatinoina a tatou fuafuaga.
[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
a le na o le
vi hooks/post-update
Se'i tatou toe fo'i i le masini kalani.
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
I luga o le Git server, matou te siakiina le faʻaogaina o le matau post-update script pe a maeʻa le tautinoga
[dev1@server proj2]$ find . ! -group proj2
- gaogao, e lelei mea uma.
Faʻafesoʻotaʻi se tagata faʻapipiʻi lona lua i Git
Se'i tatou fa'ata'ita'i le galuega a le fa'atupu lona lua.
I luga ole kalani
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
Ma i le taimi lava e tasi, i luga o le server...
[dev1@server proj2]$ find . ! -group proj2
— toe gaogao, e aoga mea uma.
Aveese se poloketi Git ma la'uina mai le poloketi mai le Git server
Ia, e mafai ona e toe fa'amautinoa ua uma ona fa'asaoina suiga uma.
C:gittest>rd /S /Q .
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
- ia tape se poloketi Git, naʻo le faʻamama atoatoa o le lisi. Sei o tatou onosaia le mea sese ua tupu, talu ai e le mafai ona tape le lisi o loʻo i ai nei e faʻaaoga ai lenei poloaiga, ae o le amio tonu lea tatou te manaʻomia.
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"
Fa'asoa avanoa ile Git
Ia tatou mautinoa e oʻo lava ia Git e le mafai e le tagata faʻapitoa lona lua ona maua le poloketi Proj1, lea e le o galue ai.
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.
O lea ua matou fa'atagaina avanoa
[root@server ~]# usermod -aG proj1 dev2
ma ina ua mavae lena mea uma e aoga.
C:gittestproj2>git push origin master
[email protected]'s password:
To ssh://10.1.1.11/var/gitservertest/proj1
* [new branch] master -> master
Faamatalaga faaopoopo
E le gata i lea, afai ei ai se faʻafitauli i faʻatagaga le faʻatagaina pe a fatuina faila ma directories, i CentOS e mafai ona e faʻaogaina le poloaiga
setfacl -Rd -m o::5 -m g::7 /var/gitservertest
I totonu foi o le tusiga e mafai ona e tautevateva i mea laiti aoga:
- auala e fausia ai se laʻau faʻatonu i Linux
- auala e pasi ai le tele o tuatusi i sed mai se laina patino i le pito o le faila, o lona uiga, fai se sui i sed i laina uma vagana ai le laina muamua
- Faʻafefea ona fesuiaʻi se tulaga suʻesuʻe i Linux maua
- E faʻafefea ona pasi le tele o laina i totonu o se matasele e faʻaaoga ai le tasi-liner i le atigi Linux
- E faʻafefea ona sola ese mai upusii tasi i le bash
- faʻafefea ona tape se lisi ma mea uma i totonu o le laina faʻatonu windows
- Faʻafefea ona faʻaoga le bash mv e toe faʻaigoaina se faila e aunoa ma le toe tusia
Faafetai mo lou mafaufau.
puna: www.habr.com