Tento dokument popisuje lokální prostředky, které jsou na fakultních počítačích k dispozici pro podporu práce s verzovacím systémem Git. O samotném systému Git se lze dočíst více například v oficiálním tutorialu, případně v knize Pro Git, resp. v jejím českém překladu. Následující dokument není návodem ke Gitu, jen k jeho použití v prostředí sítě FI MU.
Zveřejnění svého repozitáře
Git je distribuovaný verzovací systém, což znamená, že v jednu chvíli může existovat více repozitářů jednoho projektu (například od více vývojářů), a mezi těmito repozitáři lze rozesílat, případně přijímat jednotlivé změny (commity).
Struktura repozitáře Gitu je navržena tak, že pro jeho čtení není potřeba žádného zvláštního protokolu - stačí například protokolem HTTP zveřejnit repozitář jako běžný adresář
(na počítačích FI tedy mít jej pod adresářem public_html ve svém domovském adresáři - viz dokument o uživatelských WWW stránkách).
Pokud tedy například mám již existující projekt v repozitáři /home/xpepa/nejakyprojekt, můžu zveřejnit jeho klon takto:
aisa$ mkdir -p /home/xpepa/public_html/git aisa$ cd /home/xpepa/public_html/git aisa$ git clone --bare /home/xpepa/nejakyprojekt nejakyprojekt.git Cloning into bare repository 'nejakyprojekt.git'... done. aisa$ cd nejakyprojekt.git aisa$ cp hooks/post-update.sample hooks/post-update aisa$ ./hooks/post-update
Poznámka: tzv. bare repozitáře se vždy vytvářejí v adresáři s koncovkou .git.
Typografická poznámka: kurzívou jsou v příkladech označeny ty části, které jsou závislé na konkrétním uživateli a tom, jaké pojmenování projektu a další vlastnosti se rozhodne použít. Při jejich aplikaci změňte tyto části způsobem, odpovídajícím vašemu prostředí.
V tomto okamžiku je už veřejný klon repozitáře dostupný, a lze jeho existenci oznámit dalším uživatelům s tím, že je dostupný pod URL https://www.fi.muni.cz/~xpepa/git/nejakyprojekt.git. Jiný uživatel si tedy může například stáhnout vaše změny do svého repozitáře příkazem git fetch, případně git pull, anebo dokonce vytvořit klon vašeho repozitáře následujícím příkazem:
nekde$ git clone https://www.fi.muni.cz/~xpepa/nejakyprojekt.git Cloning into 'nejakyprojekt'... done.
Omezení přístupu
Výše uvedeným postupem jsme vytvořili veřejný klon vašeho repozitáře. Na repozitář zatím nevede žádný odkaz, takže jej budou mít k dispozici jen ti, kterým to explicitně sdělíte. Pro případ uhodnutí URL (což není nijak nepravděpodobné) je ale možnost zabezpečit adresář autentizací například jménem a heslem. Protože zveřejněný repozitář je vlastně jen adresář uvnitř vašeho WWW stromu, lze použít standardní postup pro autentizovaný přístup k uživatelským WWW stránkám.
Aktualizace veřejného repozitáře
Pokud ve svém pracovním repozitáři uděláme další změny (commity), lze tyto zveřejnit jejich přeposláním do veřejného repozitáře příkazem git push:
aisa$ cd /home/xpepa/nejakyprojekt aisa$ vi nejakysoubor.txt # provedeme změnu aisa$ git commit -m 'Uprava nejakeho souboru' nejakysoubor.txt aisa$ git push /home/xpepa/public_html/git/nejakyprojekt.git # zveřejníme ... To .../nejakyprojekt.git/ e413f46..b652329 master -> master
Gitweb: webové rozhraní k repozitáři Gitu
Repozitář zveřejněný protokolem HTTP výše popsaným způsobem je sice čitelný pro různé Git klienty, ale ne pro člověka. Pokud chcete, aby obsah repozitáře byl i lidsky čitelný včetně verzovacích informací (datum poslední změny, seznam změn, seznam větví, rozdíly mezi verzemi, obsah určitého souboru v dané nebo poslední verzi, atd.), můžete použít například nástroj Gitweb. Tento nástroj je nainstalovaný na počítači Aisa a stačí jen výpis adresářů http://www.fi.muni.cz/~xpepa/git/ a http://www.fi.muni.cz/~xpepa/git/nejakyprojekt.git/ přesměrovat na Gitweb. Přístup Git klientů zůstane zachován, protože ti nikdy výpis adresáře nepoužívají. Repozitář pak je přístupný pod stejným URL jak lidem, tak i programovým klientům.
Pro použití Gitwebu stačí do adresáře ve kterém máte své veřejné repozitáře (například /home/xpepa/public_html/git z výše uvedených příkladů) umístit soubor jménem .htaccess (pozor, tečka na začátku) s následujícím obsahem:
# obsah souboru /home/xpepa/public_html/git/.htaccess:
Options -Indexes
RewriteEngine On
RewriteRule ^$ /git/gitweb.cgi/%{REQUEST_FILENAME} [L,PT]
RedirectMatch permanent ^(/~xpepa/git/)([a-z0-9_/-]*[a-z0-9_-])\.git/$ $1?p=$2.git
Webové rozhraní ke Gitu si lze vyzkoušet například na adrese http://www.fi.muni.cz/~kas/git/.
Jeden repozitář pro více uživatelů
V centralizovaných verzovacích systémech (CVS, Subversion) je jediný možný přístup takový, že existuje jeden centrální repozitář, do kterého všichni vývojáři promítají svoje změny.
Git podporuje různé přístupy (některé z nich jsou popsány v manuálové stránce
gitworkflows(7)). Jeden z častých přístupů je, že projekt má jednoho správce,
kterému ostatní nabízejí svoje změny ze svých veřejných repozitářů, on si je podle svého uvážení shromažďuje do svého repozitáře, a na základě nich pak publikuje svůj repozitář jako "oficiální verzi" projektu.
Centralizovaný přístup je nicméně možný i v Gitu. K jeho použití je však potřeba mít sdílený adresář, zapisovatelný všemi oprávněnými uživateli. Podpora tohoto přístupu na strojích FI je plánována do budoucna. Funkce a nastavování přístupových práv bude podobné, jako na fakultním Subversion serveru.
fi
muni