Git
Chapters ▾ 2nd Edition

4.2 Server’də Git - Serverdə Git Əldə Etmək

Serverdə Git Əldə Etmək

İndi biz bu protokolları öz serverində işlədən Git serveri qoşulmasını tamamlayacağıq.

Note

Burada biz, bu servisləri macOS və Windows serverlərdə də işləməsi mümkün olan Linux bazalı serverdə adi, sadələşdirilmiş quraşdırılmaya lazım olan addımları və əmrləri nümayiş etdirəcəyik. Əsasən, öz infrastrukturunla server istehsalı tərtib etmək əməliyyat sistemi vasitələrində və ya təhlükəsizlik ölçülərində fərqlər yaradır, lakin ümid edirik ki, bu sizə qarışıqlığın nədə olduğu haqda ümumi ideya verəcək.

Qaydasıyla ilk olaraq hər hansı bir Git server tərtib etmək üçün mövcud olan bir deponu yeni bir depoya (içində işlək qovluq olmayan) ixrac etməlisiniz. Bu ümumilikdə çox asandır. Əvvəlcə öz deponuzu yeni boş depo yaratmaq məqsədilə klonlamaq üçün --bare seçimi ilə klonlama əmrini işə salırsınız. Konvensiyaya göre boş depo qovluğunun adı .git sonluğu ilə bitir, məsələn:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

İndi sizin my_project.git qovluğunuzda Git qovluğu datanızın kopyası olmalıdır.

Bu təxminən belə bir şeyə bərabərdir:

$ cp -Rf my_project/.git my_project.git

Konfiqurasiya faylında bəzi xırda dəyişikliklər ola bilər, lakin sizin məqsədinizdə bu təxminən eynidir. O, Git deposunu işlək qovluq olmadan özü götürür və yalnız özünə aid xüsusi qovluq yaradır.

Serverə Boş Depo Daxil Edilməsi

Artıq sizin boş deponuzun kopyası var və sadəcə etməli olduğunuz onu serverə qoyub protokolları tərtib etməkdir. Fərz edək ki, siz SSH girişi olan git.example.com adlanan server tərtib etmisiniz və bütün Git depolarınızı /srv/git qovluğunda saxlamaq istəyirsiniz. /srv/git-in serverdə mövcud olduğunu fərz etsək, siz boş deponuzu aşağıdakı kimi kopyalayaraq yeni depo yarada bilərsiniz:

$ scp -r my_project.git user@git.example.com:/srv/git

Bu zaman, /srv/git qovluğuna SSH bazalı oxuma girişi olan digər istifadəçilər bunu işlədərək sizin deponuzu klonlaya bilər:

$ git clone user@git.example.com:/srv/git/my_project.git

Əgər SSH-lərin istifadəçisi serverdədirsə və /srv/git/my_project.git qovluğuna girişi icazəsi varsa, onların avtomatik olaraq push girişi də olacaqdır.

Əgər siz --shared seçimindən istifadə edib git init əmrini işlətsəniz, Git birmənalı şəkildə avtomatik olaraq depoya icazələr yazılması üçün qrup əlavə edəcək. Qeyd edək ki, bu əmri qoşduğunuz zaman prosesdəki heç bir əmri və ya işi tələf etməyəcəksiniz.

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

Gördüyünuz kimi, Git deposu almaq, boş versiyasını yaratmaq və SSH girişi olan əməkdaşlarınız və sizin üçün serverə yerləşdirmək olduqca asandır. Artıq siz eyni proyektdə əməkdaşlıq etməyə hazırsınız.

Onu da qeyd etmək zəruridir ki, bir çox insanın giriş edə biləcəyi faydalı Git serveri tərtib etmək üçün bu ehtiyacınız olan hər şeydir - sadəcə SSH’lı hesabları serverə daxil edin və boş deponu bütün istifadəçilərin oxuma və yazma girişi olan yerə yapışdırın. Başqa heç nəyə ehtiyac yoxdur, artıq hazırsınız.

Digər bölmələrdə artıq daha mürəkkəb quraşdırmalarda genişləndirmələri görəcəksiniz. Bu müzakirəyə hər istifadəçi üçün hesab açmaya ehtiyac duyulmaması, depolara publik oxuma icazəsi verilir, veb UI və digərlərini tərtib etmək daxil edilir. Eyni zamanda yadda saxlamaq lazımdır ki, bir çox insanla özəl layihədə əməkdaşlıq etmək üçün sadəcə SSH serveri və boş depoya ehtiyacınız vardır.

Kiçik Quraşdırmalar

Əgər siz balaca qrupsunuzsa və ya az developer olan təşkilatınızda Git sınamaq istəyirsinizsə, bu sizin üçün çox asan ola bilər. Git serverin ən mürəkkəb aspektlərindən biri də istifadəçi idarəetməsidir. Əgər bəzi depoların istifadəçilərin bir hissəsi üçün yalnız oxunan, digər hissəsi üçün həm yazılan, həm oxunan olmasını istəyirsinizsə bunu quraşdırmaq daha çətin ola bilər.

SSH Girişi

Əgər sizin bütün developerlərinizin SSH girişi olan serveriniz varsa, bu ilk deponuzu quraşdırmaq üçün ən asan yerdir, çünki burada etməli olduğunuz heç nə yoxdur (son bölmədə göstərdiyimiz kimi). Əgər siz depolarınızda daha çox girişə nəzarət tipli icazələr olmasını istəyirsinizsə, siz onu öz serverinizin əməliyyat sisteminizin normal fayl sistemindəki icazələrlə həll edə bilərsiniz.

Əgər siz öz depolarınızı hər hesabın yazma icazəsi olmayan komandanızın serverində yerləşdirmək istəyirsinizsə, onlar üçün SSH sistemi tərtib etməlisiniz. Fərz etsək ki, sizin bunu edəcək serveriniz var, deməli quraşdırılmış SSH serveriniz var və bu şəkildə serverə daxil olmağınız mümkündür.

Komandanızdakı hər kəsə giriş təmin etməyin bir neçə yolu var. Birincisi odur ki, hər kəsə hesab açmalısınız ki, bu da tam olaraq çox çətin bir yoldur. Ola bilər ki siz adduser (və ya mümkün useradd alternativi) işlətmək istəməyəsiniz və hər yeni istifadəçi üçün müvəqqəti parol yaratmalı olasınız.

İkinci metod mexanizmdə tək bir git istifadəçi yaratmaq, hər bir yazı icazəsi olan istifadəçidən SSH public key’ni sizə göndərməsini istəmək və həmin key’i yeni git hesabındakı ` ~/.ssh/authorized_keys` faylına əlavə etməkdir. Həmin anda hər kəs git hesabına bu mexanizmlə giriş edə bilər. Bu heç bir şəkildə tapşırıqların yerinə yetirilməsinə təsir etmir, yəni sizin əlaqə qurduğunuz SSH istifadəçisi sizin qeyd etdiyiniz tapşırıqlara mane olmur.

Bunu etməyin digər yolu LDAP serverindən və ya artıq qurduğunuz digər mərkəzləşdirilmiş mənbələrdən identifikasiya edilmiş SSH serverin olmasıdır. Hər bir istifadəçinin mexanizmə shell girişi olduğu müddətcə fikirləşdiyiniz bütün SSH identifikasiya mexanizmləri işləyə bilər.