67.7.5.2.2. Instalace v Debian Etch

Balíček gitosis se nachází až v Debian Lenny. Také jsem jej nenašel v backports.org pro Etch. Použil jsem tedy jednoduchou instalaci ze zdrojů:

# aptitude install python python-setuptools sudo
# cd /usr/local/src
# git clone git://eagain.net/gitosis
# cd gitosis
# python setup.py install --prefix=/usr/local

Po instalaci je třeba zkontrolovat práva souboru /usr/local/lib/python2.4/site-packages/gitosis-0.2-py2.4.egg/gitosis/templates/admin/hooks/post-update. Tento soubor se může nacházet v jiném adresáři podle vašeho konkrétního systému a podle toho jaký jste zvolili --prefix. V mém případě práva na tomto souboru byla špatná, takže jsem je opravil.

# chmod 0755 /usr/local/lib/python2.4/site-packages/gitosis-0.2-py2.4.egg/gitosis/templates/admin/hooks/post-update

Když máme gitosis nainstalovaný, přikročíme k vytvoření uživatele pro repositář. Můžeme použít obvyklé jméno git neobo jakékoliv jiné. Můžeme mít také více účtů.

# adduser --system --home /home/git --gecos 'git repository' --group --disabled-password --shell /bin/sh git

Protože k repositáři budeme přistupovat přes ssh klíč, nahrajem si jej na server.

notebook:$ scp ~/.ssh/id_rsa.pub radek@server.cz:
server:# sudo -H -u git gitosis-init </radek/id_rsa.pub
Initialized empty Git repository in ./
Initialized empty Git repository in ./

S gitosis se pracuje pomocí gitu. Tedy naklonujeme si gitosis-admin a v té provádíme změny které natlačíme spátky na server. Začneme tedy klonováním.

notebook:$ git clone git@SERVER:gitosis-admin.git

Nyní můžeme přidat dalšího uživatele. To učiníme tak že do adresáře gitosis-admin/keydir přidáme jeho veřejný ssh klíč.

notebook:$ cd gitosis-admin
notebook:$ cp karel_rsa.pub keydir
notebook:$ git add keydir/karel_rsa.pub
notebook:$ git commit
notebook:$ git push

Vytvoření nového projektu sestává ze dvou kroků. V prvním jej zapíšeme do konfigurace a přidělíme přístup uživatelům. Konfigurace je v souboru gitosis.conf adresáře gitosis-admin. Pro nový projekt pojmenovaný pokus v něm vytvoříme sekci.

[group pokus]
writable = pokus
members = karel@orthrank ja@notebook

Změny zatlačíme na server

notebook:$ git commit && git push

Nyní si vytvoříme repositář projektu a ten také zatlačíme na server.

notebook:# mkdir pokus
notebook:# cd pokus
notebook:# git init
notebook:# git remote add myserver git@server.example.com:pokus.git
notebook:# vi README
notebook:# git commit ...
notebook:# git push myserver master:refs/heads/master