Nieco ponad rok temu pisałem o instalacji git’a na własnym serwerze wraz narzędziem gitosis do zarządzania repozytoriami. Choć gitosis pojawia się w oficjalnej książce do git’a, to jest on nieco przestarzały. Sam projekt został wyczerpany i nie jest już wspierany. Mnie osobiście dodatkowo napotkały problemy z importowaniem kluczy publicznych dla użytkowników repozytorium. Gitosis nie aktualizował automatycznie pliku authorized_keys i miałem problemy z ustanawianiem dostępów do repozytoriów.
W związku z tym zdecydowałem się na spróbowanie Gitolite (następny rozdział z oficjalnej książki gita). Projekt Gitolite przynajmniej jest cały czas aktywny i poza tym ma więcej możliwości. Przede wszystkim umożliwia bardziej kompleksowe zarządzanie uprawnieniami do repozytorium (można na przykład ustawiań użytkownikom oddzielne uprawnienia na poszczególne gałęzie projektu).
Działania na serwerze
Samą migrację należałoby rozpocząć od zablokowania dostępu do repozytoriów przez „wyłączenie” pliku authorized_keys
mv /home/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys.bak
Dla pewności lepiej sobie jeszcze zrobić kopię całego katalogu usera ‚git’, najlepiej rsync albo tar (z zachowaniem właścicieli i uprawnień plików).
Następnie można przystąpić do instalacji gitolite:
sudo apt-get install gitolite
I nadania pierwszego dostępu poprzez wskazanie klucza publicznego użytkownika:
gl-setup /tmp/id_rsa.pub
Gitolite pozwala na definiowanie wielu kluczy publicznych dla tego samego użytkownika. Takie rozwiązanie jest logiczne w przypadku logowaniu się z różnych miejsc/maszyn. Dodaje się wówczas klucze publiczne o nazwach np. rumcajs@lesniczowka.pub, rumcjas@centrala-kolno.pub, rumcajs@wszopie.pub. W konfiguracji wystarczy podać nazwę użytkownika, w tym przypadku rumcajs, a będzie on miał dostęp do zdefiniowanego repozytorium bez względu po którym kluczu publicznym nastąpi zalogowanie.
Jednak na tym etapie przy definiowania pierwszego dostępu do gitolita, należy unikać używania klucza publicznego, który ma taką postać (znak @ w nazwie)
Działania po stronie klienta
Teraz można ściągnąć sobie w końcu repozytorium konfiguracyjne gitolite:
git clone ssh://git@moj-serwer.net:5022/gitolite-admin.git
Żeby dokonać konwersji configa z gitosys do gitolite można użyć gotowego skryptu stworzonego w ramach projektu. W tym celu można sobie ściągnąć projekt z githuba:
git clone git://github.com/sitaramc/gitolite
Znajduje się tam program convert-gitosis-conf, który załatwi sprawę migracji konfiguracji. Należy mu wskazać plik wejściowy i wyjściowy:
gitolite/convert-gitosis-conf < gitosis-admin/gitosis.conf >> gitolite-admin/conf/gitolite.conf
Na koniec należy jeszcze zweryfikować utworzony plik, dodać/zdefiniować brakują uprawnienia, przekopiować klucze publiczne do katalogu gitolite-admin/keydir/ i usunąć wpisy dla repozytorium gitosis-admin.
vi gitolite-admin/conf/gitolite.conf
Ostatni krok to commit wprowadzonych zmian i wysłanie zmian na serwer.
$ cd gitolite-admin $ git commit -am 'Migracja do gitolite' $ git push
Pingback: Instalacja git na serwerze