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.pubInitialized 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-adminnotebook:$
cp karel_rsa.pub keydirnotebook:$
git add keydir/karel_rsa.pubnotebook:$
git commitnotebook:$
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 pokusnotebook:#
cd pokusnotebook:#
git initnotebook:#
git remote add myserver git@server.example.com:pokus.gitnotebook:#
vi READMEnotebook:#
git commit ...notebook:#
git push myserver master:refs/heads/master