Git

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

GIT je moderní SCM systém, který byl původně vytvořen pro správu zdrojových kódů linuxového jádra.[1]

Klienti

Soubor:git gui lin.png
Linuxový klient git-core
Soubor:git gui win.png
Klient msysgit na MS Windows XP

V linuxu je klient pro práci gitem ovykle součástí distribuce. Klienta pro MS Windows si můžete stáhnout z http://code.google.com/p/msysgit/

Tento klient umožňuje jak práci v CLI (příkazová řádka) tak i GUI (grafické rozhraní). Jak se můžete přesvědčit z přiložených screenshotů spouští se a vypadána linuxu i MS Windows podobně

Manuálů jak pracovat s gitem se válí po internetu celá řada..

Vytvoření git serveru

Pro zpřístupnění gitu přes www server apache je třeba následující postup:

Na straně www serveru

1
Na stroji musí být nainstalován balík git-core a pro apache povolen webdav
Poznámka
root@server:~# apt-get install git-core
root@server:~# a2enmod dav dav_fs
2
Vytvoří se adresář do kterého budou cpát klienti změny, a pak se pro tento adresář aktivuje git a aby mohli přistupovat do tohoto adresáře klienti přes webdav, musí se nastavit příslušná práva pro web server
Poznámka
root@server:/var/www/accesscontrol.git# git --bare init
Initialized empty Git repository in /var/www/accesscontrol.git/
root@server:/var/www/accesscontrol.git# chown -R www-data.www-data .
3
Pak se pro tento adresář nastaví konfiguračním souborem /etc/apache2/conf.d/git.conf webDAV
Poznámka
<Location /accesscontrol.git>
    DAV on
</Location>
4
Pokud chcete mít přístup do adresáře chráněný autorizací, rozšíříte tento konfigurační soubor o další volby..
Poznámka
<Location /accesscontrol.git>
    DAV on
    AuthType Basic
    AuthName "Git"
    AuthUserFile /var/www-pass/accesscontrol.pwd
    Require valid-user
</Location>
5
..a vytvoříte odpovídající soubor /var/www-pass/accesscontrol.pwd
6
Potom znovu načtete konfiguraci vašeho web serveru
Poznámka
root@server:~# /etc/init.d/apache2 force-reload
Upozornění Po předání změn z klienta na server (příkaz push) je na straně serveru třeba spoustit v repozitáři příkaz git-update-server-info. Aby nebylo nutné se na server přihlašovat a spouštět tento příkaz manuálně, je třeba nastavit soubor post-update v podadresáři hooks dát mu právo ke spouštění a také umožnit přístup serveru do souboru refs v podadresáři info.
root@server:/var/www/accesscontrol.git# mv hooks/post-update.sample hooks/post-update
root@server:/var/www/accesscontrol.git# chmod +x hooks/post-update
root@server:/var/www/accesscontrol.git# chown -cR www-data.www-data info/refs

Pochopitelně, pokud váš server běží pod jiným uživatelem, tak je třeba nastavit přístup pro něj.

Na straně klienta

Test dostupnosti repository

Předtím, než provedete první commit, je záhodno otestovat dostupnost repozitory z klientského počítače. Pro tento účel lze použít nástroj curl, který umožňuje s parametrem -v podrobnější výpis. Z něj lze pak zjistit příčinu ev. problému v připojení.

Zkuste si jím vypsat obsah souboru HEAD na straně repozitory.

user@klient:~/accesscontrol-git# curl --location -v http://<login>:<password>@<server>/accesscontrol.git/HEAD

Abyste se vyhnuli použití přihlašovacího jména a hesla na příkazové řádce, můžete k autorizaci využít soubor ~/.netrc

user@klient:~/accesscontrol-git# curl --netrc --location -v http://<server>/accesscontrol.git/HEAD
ref: refs/heads/mediawiki

Pokud je vše v pořádku, tak se vám vypíše obsah souboru HEAD na straně repozitory. V případě že je nějaký problém, tak z chybové stránky máte šanci zjistit kde hledat příčinu.

První commit

Před prvním commitem by mělo bát nastavené správné URL pro upload..

user@klient:~/accesscontrol-git# git-config remote.upload.url http://<server>/accesscontrol.git/

Pokud jej však přidáte při prvním commitu, tak by se mělo přidat automaticky..

user@klient:~/accesscontrol-git# git push http://<login>:<password>@<server>/accesscontrol.git master
Poznámka Pokud chcete uploadnout kompletní repository včetně všech větví, tak místo názvu větve masterdejte parametr -a

Při dalších commitech už stačí pouze..

user@klient:~/accesscontrol-git# git push


Problémy a jejich řešení

PUT error: curl result=22, HTTP code=403
Chyba je na straně repository v souboru info/refs S největší pravděpodobností buď chybí, nebo má špatně nastavená práva.

Viz také

Seriál na root.cz

  1. http://www.root.cz/clanky/git-distribuovana-sprava-revizi/
  2. http://www.root.cz/clanky/git-sprava-repositaru/
  3. http://www.root.cz/clanky/git-config-commit-e-mail-a-browsing/
  4. http://www.root.cz/clanky/git-nase-prvni-vydani/

Oficiální stránky