Verzovací systém Git

Pro řešení semestrálních prací v předmětu PR2 budeme používat verzovací systém Git. Verzovací systém umožňuje udržovat historii vývoje projektu, což může být výhodné, jestliže např. potřebujeme získat kus kódu který jsme smazali apod. Toto také usnadňuje zálohování projektu. Zároveň také umožňujě komfortní práci více programátorů na jednom projektu. Existují různé verzovací systémy, Git patří mezi rozšířenější (jsou pomocí něj spravovány zdrojové kódy Linuxového jádra).

Repozitář Linuxového jádra (a mnoho dalších) je pro čtení volně přístupný. Podívat se na něj můžete na adrese https://github.com/torvalds/linux. Jedná se pravděpodobně o jeden z největších repozitářů na světě. V době psaní tohoto přístpěvku v něm bylo úctyhodných 495 tisíc commtů. Pozor pokud byste si ho chtěli stáhnout, připravte si na disku cca 2 GiB volného místa.

Verzovací systémy uchovávají zdrojové kódy projektu společně s historií jejich vývoje v tzv. repozitáři. Jednotlivé změny v historii se nazývají revize (někdy také “commit”). Vývojář má typicky aktuální zdrojové kódy stažené na svém počítači, kde v nich provádí změny. Ve chvíli, kdy je se změnami spokojen, změny tzv. commitne. Verzovací systém v té chvíli vytvoří novou revizi, kde je uchována informace o tom, co se změnilo (modifikace souborů, přidání nových, smazání atd.). Ve většině případů musí také vývojář zadat také zprávu, která popisuje daný commit.

Tyto změny jsou nahrány na server, kde se provede aktualizace repozitáře a kde si je můžou jiní vývojáři stáhnout. Pokud více vývojářů pošle vytvoří svoje commity, musí je v době nahrávání na server sloučit (merge). V některých případech lze merge provést automaticky (byly editovány odlišné soubory), v jiných případech musí vývojář provést sloučení ručně. K tomu mu mohou pomoci další nástroje.

Verzovací systémy se dělí na dvě skupiny: centralizované (např. SVN, CVS) a distribuované (např. Git, Mercurial). Centralizované verzovací systémy se vyznačují tím, že repozitář projektu je uchováván na serveru a uživatelé (vývojáři) mají na svém počítači stažený pouze zdrojový kód platný pro některou z revizí. Každý commit je tedy zároveň i nahrání změn na server. U distribuovaných systémů oproti tomu mají uživatelé stažený celý repozitář na svém počítači. Commit se pak ukládá pouze lokálně a na server je nahraný až při tzv. push operaci. Oproti tomu, synchronizace se serverem (stažení commitů jiných uživatelů) se provádí pomocí pull operace.

Pro nastudování Gitu a nastavení Gitlabu doporučujeme využít příslušný návod.
Jednoduchý návod na GIT lze najít například i zde: http://rogerdudler.github.io/git-guide/
courses/b0b36pjv/tutorials/02/gitlab.txt · Last modified: 2018/03/05 12:21 by mudromar