Git
Chapters ▾ 2nd Edition

4.8 Git sa Server - GitLab

GitLab

Bagaman, ang GitWeb ay masyadong simple. Kung ikaw ay naghahanap na isang mas moderno, puno ng mga tampok na Git server, mayroong iilang open source na solusyon na maaari mong i-install sa halip. Dahil ang GitLab ang isa sa mga sikat, tatalakayin natin ang pag-install at paggamit nito bilang halimbawa. Ito ay mas mahirap kumpara sa opsyon ng GitWeb at maaaring mangangailangan ng mas maraming pagpapanatili, pero ito ay mas puno ng mga tapok na opsyon.

Pag-install

Ang GitLab ay isang database-backed na aplikasyon sa web, kaya subsob ka sa pag-install nito kumpara sa ibang mga server ng Git. Sa kabutihang-palad, ang proseso na ito ay maayos na nakadokumento at sinuportahan.

Mayroong iilang mga pamamaraan para magawa mo ang pag-install ng GitLab. Para mapagana at mapatakbo ang isang bagay nang mabilisan, maaaring i-download ang isang birtwal na imahe ng makina or isang one-click na installer mula sa https://bitnami.com/stack/gitlab, at i-tweak ang pagsasaayos upang matugma sa iyong partikular na environment. Isang magandang tampok na sinali ng Bitnami ay isang login screen (ma-access sa pamamagitan ng pag-type ng alt+→); sinasabi nito sayo ang IP address at default username at password para sa na-install na GitLab.

Ang login screen sa birtwal na makina ng Bitnami GitLab.
Figure 50. Ang login screen sa birtwal na makina ng Bitnami GitLab.

Para sa iba pang bagay, sundin ang gabay sa Komunidad na Edisyon ng Gitlab readme, na mahahanap sa https://gitlab.com/gitlab-org/gitlab-ce/tree/master. Doon makakahanap ka ng tulong para sa pag-install ng GitLab gamit ang mga resipe ng chef, isang birtwal na makina sa Digital Ocean, at RPM at DEB na mga pakete (kung saan, sa pagsulat na ito, ay nasa beta). Mayroon ding “unofficial” na pag-gabay sa pagpapagana sa GitLab gamit ang hindi kilala na mga operating system at mga database, isang ganap na manu-manong pag-install na iskrip, at marami pang ibang mga paksa.

Administrasyon

Ang administrasyon sa interface ng GitLab ay maaaring ma access sa web. Simpleng tukuyin lamang ang iyong browser sa hostname at IP address kung saan naka-install ang GitLab, at mag-login bilang admin na user. Ang default na username ay admin@local.host, at ang default na password ay 5iveL!fe (na kung saan ikaw ay sasabihan na baguhin sa sandali na maka-log in ka). Kapag naka-log in na, pindutin ang “Admin area” na icon sa menu sa itaas na kanan na bahagi ng pahina.

Ang ``Admin area'' na aytem sa menu ng GitLab.
Figure 51. Ang “Admin area” na aytem sa menu ng GitLab.

Mga Gumagamit

Ang mga gumagamit sa GitLab ay mga account na tumutugma sa mga tao. Ang mga account ng mga gumagamit ay hindi gaano kakumplikado; higit sa lahat ito ay koleksyon ng mga personal na impormasyon na nakalakip sa datos ng login. Ang bawat account ng gumagamit ay may sariling namespace, na kung saan ay isang lohikal na pagpapangkat ng mga proyekto na nabibilang sa gumagamit na iyon. Kung ang user jane ay may proyekto na nakapangalan na proyekto, ang url ng proyekto na iyon ay http://server/jane/proyekto.

Ang screen ng administrasyon na gumagamit sa GitLab.
Figure 52. Ang screen ng administrasyon na gumagamit sa GitLab.

Mayroong dalawang paraan sa pagtanggal ng isang user. Sa “Blocking” pinipigilan ang isang gumagamit mula sa pag-login sa instansya ng GitLab, ngunit lahat ng datos sa ilalim ng namespace ng gumagamit ay mapapanatili, at ang mga commit na naka-sign ng email address ng gumagamit ay mag-link pa rin pabalik sa kanilang profile.

Sa kabilang kamay, ang ‘`Destroying’ ay ganap na tinatanggal sa database at filesystem. Lahat ng mga proyekto at datos sa kanilang namespace ay tinatanggal, at anumang mga grupo na pagmamay-ari nila ay matatangal rin. Ito ay malinaw naman na isang mas permanente at mas nakakasira na galaw, at ang paggamit nito ay bihira.

Mga Grupo

Ang isang grupo sa GitLab ay pagtitipon ng mga proyekto, kasama ang mga datos tungkol sa kung paano ma-access ng gumagamit ang proyektong iyon. Bawat grupo ay may sariling namespace ng proyekto (tulad ng mga gumagamit), kaya kung ang grupo ng pagsasanay ay may pryoyektong materyales, ang url na iyon ay http://server/pagsasanay/materyales.

Ang screen sa administrasyon ng grupo sa GitLab.
Figure 53. Ang screen sa administrasyon ng grupo sa GitLab.

Ang bawat grupo ay nauugnay sa ilang bilang ng mga gumagamit, bawat isa ay may antas ng mga pahintulot para sa mga proyekto ng grupo at ang grupo mismo. Ang saklaw nito ay nagmumula sa “Guest” (mga isyu at pag-chat lamang) hanggang “Owner” (buong kontrol sa grupo, mga miyembro nito, at mga proyekto nito). Masyadong marami ang mga klase ng pahintulot para malista dito, ngunit mayroong kapaki-pakinabang na link sa screen ng administrasyon ang GitLab.

Mga Proyekto

Halos lahat ng proyekto sa GitLab ay tumutugma sa isang repositoryo sa Git. Bawat proyekto ay nabibiling sa isang namespace, maski isang gumagamit o isang grupo. Kung ang proyekto ay nabibilang sa isang gumagamit, ang may-ari ng proyekto ay may direktang kontrol kung sino ang may access sa proyekto; kung ang proyekto ay nabibilang sa isang grupo, ang user-level na pahintulot ng grupo ang eepekto.

Bawat proyekto ay may antas rin ng kakayahang makita, kung saan ay may kapangyarahin sa pag-kontrol kung sino ang may access sa pagbasa sa mga pahina at repositoryo ng proyektong iyon. Kung ang proyekto ay Private, ang may-ari ng proyekto ay dapat tahasang magbigay ng access sa partikular na gumagamit. Ang isang Internal na proyekto ay makikita ng sinuman na gumagamit na naka-log, at ang isang Public na proyekto ay makikita ng sinuman. Tandaan na ang mga ito ay kumokontrol sa git fetch na access pati na rin ang access sa web UI ng proyekto na iyon.

Mga Hook

Sinuportahan din ng GitLab ang mga hook, pareho sa antas ng proyekto o sistema. Para sa alinman sa mga ito, ang GitLab na server ay magsasagawa ng isang HTTP POST kasama ang iilang naglalarawang JSON sa tuwing may nagaganap na kaganapan na may kaugnayan. Ito ay isang mahusay na paraan upang i-kontekta ang iyong mga repositoryo sa Git at instansya ng GitLab sa ibang bahagi ng iyong pag-automate ng pag-unlad, tulad ng mga server ng CI, mga chat room, o mga kagamitan sa pag-deploy.

Pangunahing Paggamit

Ang unang bagay na gusto mong gawin gamit ang GitLab ay lumikha ng isang bagong proyekto. Ito ay ginagawa sa pamamagitan ng pag-click sa “+” na icon sa toolbar. Tatanungin ka para sa pangalan ng proyekto, kung saan na namespace ito nabibilang, at kung ano ang antas ng kakayahang makita nito. Karamihan sa mga iyong tinukoy dito ay hindi permanente, at maaaring muling maayos sa sunod sa pamamagitan ng interface sa mga setting. I-click ang “Create Project”, at tapos ka na.

Kapag umiiral na ang proyekto, malamang ay gugustuhin mong kumonekta sa isang lokal na repositoryo sa Git. Bawat proyekto ay naa-access sa HTTPS o SSH, alinman ay maaaring gamiting upang i-configure ang isang remote na Git. Ang mga URL ay makikita sa itaas sa pahina ng home page ng proyekto. Para sa umiiral na lokal na repositoryo, ang utos na ito ay lilikha ng isang remote na nakapangalan na gitlab sa naka-host na lokasyon:

$ git remote add gitlab https://server/namespace/project.git

Kung wala kang lokal na kopya sa repositoryo, maaari mong gawin ito:

$ git clone https://server/namespace/project.git

Ang web UI ay nagbibigay ng access sa ilang mga kapaki-pakinabang na tanawin sa repositoryo mismo. Bawat home page ng proyekto ay nagpapakita ng kamakailang mga gawain, at mga link sa tuktok ay dadalhin ka mga tanawin ng mga file ng proyekto at ang commit log.

Pakikipagtulungan

Ang pinakasimpleng paraan ng pakikipagtulungan sa isang proyekto ng GitLab ay sa pamamagitan ng pagbigay access sa ibang gumagamit na direktang mag-push sa repositoryo ng Git. Maaari kang magdagdag ng miyembro sa proyekto sa pamamagitan ng pagpunta sa “Members” na seksyon ng mga setting ng proyekto, at pag-uugnay sa bagong gumagamit ng antas ng pag-access (ang iba’t ibang mga antas ng pag-access ay tinalakay ng kaunti sa Mga Grupo). Sa pamamagitan ng pagbigay sa isang gumagamit ng antas ng pag-access na “Developer” o mataas pa, ang user na iyon ay maaaring mag push ng direkta ng mga commit at mga branch sa repositoryo ng walang parusa.

Isa pa, ang isang mas decoupled na paraan ng kolaborasyon ay sa pamamagitan ng paggamit ng mga merge na request. Ang tampok na ito ay nagbibigay daan para sa sinumang gumagamit na nakakakita sa proyekto na mag-ambag sa isang kontrolado na paraan. Ang mga gumagamit na may direktang access ay maaaring gumawa ng branch, mag-push ng mga commit sa branch na iyon, at mag open ng isang merge na request mula sa kanilang branch pabalik sa master o anumang ibang branch. Ang mga gumagamit na walang pahintulot na mag-push sa isang repositoryo ay maaaring mag “fork” nito (gumawa ng sariling kopya), mag push ng mga commit sa iyong kopya, at mag bukas ng isang merge na request mula sa kanilang fork pabalik sa pangunahing proyekto. Ang modelong ito ay nagpapahintulot sa mga may-ari na magkaroon ng buong kontrol kung ano ang pumapasok sa repositoryo at kailan, habang nagpapahintulot sa mga kontribusyon mula sa hindi pinagkakatiwalaan na mga gumagamit.

Ang mga merge na request at mga isyu ay ang mga pangunahing yunit ng matagal na nabubuhay na diskusyon sa GitLab. Bawat merge na request ay nagpapahintulot ng bawat linya na diskusyon sa iminungkahi na pagbabago (na sumusuporta sa isang magaan na klase ng pagsusuri sa code), pati na rin ang isang thread para sa pangkalahatang talakayan. Parehong maaaring italaga sa mga gumagamit, o organisado sa mga milestones.

Ang seksyon na ito ay nakatuon sa mga may kaugnayan sa Git na tampok ng GitLab, pero bilang isang ganap na proyekto, nagbibigay ito ng marami pang iba na mga tampok upang makatulong sa inyong koponon na magtulungan, tulad ng mga wiki sa proyekto at mga kagamitan para sa pagpapanatili ng sistema. Isang benepisyo ng GitLab ay, kapag ang server ay naka-set up na, bihira mo na kailangan baguhin ang file ng pagsasaayos o i-access ang server gamit ang SSH; karamihan sa administrasyon at pangunahing paggamit ay maaaring matupad sa pamamagitan ng interface sa browser.