Důležité!

Pozorně si přečtěte pokyny k výuce během rektorského volna!

Git repozitář

Založení repozitáře

  • Přihlaste se do fakultního GitLabu.

    Pro přihlášení použijte fakultní login (xNĚCO) a fakultní heslo.

  • Vytvořte nový projekt s názvem pb071.

    Viditelnost projektu musí být Private!

  • Přidejte přístup k projektu uživateli kontr s právem Reporter.

    SettingsMembers. Můžete přidat i svoje cvičící, ale další osoby nepřidávejte!

  • Nevíte, co s Gitem dělat?

    Zkuste se podívat do manuálu.

Opakující studenti

Pokud jste předmět měli zapsaný v dřívějších semestrech, starý repozitář smažte nebo přesuňte a vytvořte pb071 znovu podle návodu výše.

Projekt lze přesunout v nastaveních: ProjectSettingsAdvanced (dolů) → Change path

Pravidla

  • Viditelnost repozitáře musí být celou dobu Private.

    Porušení tohoto pravidla se bude chápat jako opisování.

  • Kromě vlastníka mohou být členové projektu pouze kontr a cvičící.

    Porušení tohoto pravidla se bude chápat jako opisování.

  • Od momentu prvního odevzdání je zakázáno repozitář smazat nebo upravovat jeho historii.

    Porušení tohoto pravidla způsobí technické problémy s klonem repozitáře, který má Kontr. Manuální oprava ze strany administrátora bude stát penalizaci 5 bodů.

  • Maximální povolená velikost repozitáře je 10 MB.

    Po překročení velikosti Kontr odevzdání odmítne, což se bude muset vyřešit úpravou historie. Viz penalizaci o bod výše.

  • Repozitář musí obsahovat soubor .gitignore.

    Účelem tohoto pravidla je zabránit studentům nahrát do repozitáře většinu zbytečných souborů. Pro příklad obsahu souboru viz manuál.

    Obsah souboru je plně v kompetenci studentů, při porušení jiných pravidel se na něj nebude brát ohled.

Jak Kontr repozitář používá

S prvním odevzdáním úkolu si Kontr vytvoří kopii příkazem git clone. Pro vyšší efektivitu se tato kopie při dalším odevzdání pouze aktualizuje příkazem git pull --ff-only. To má za následek některá omezení popsána výše.

Historie repozitáře

Git je verzovací nástroj, tudíž jeho cílem je uchovávat různé verze projektu tak, jak se v čase měnily. Protože je navíc distribuovaný, tak si každý klon repozitáře uchovává celou kopii všech změn.

Další vlastností Gitu je tzv. kryptografické ověřování historie. Každá verze je označená hodnotou (hashem), která závisí na aktuálním stavu projektu a všech minulých verzích. Pokud někdo ve zdrojovém repozitáři historii změní, změní se tyto hodnoty pro všechny další verze. Kopie tohoto repozitáře při git pull poznají, že jejich historie je jiná a odmítnou nové verze.

Z toho důvodu smazání repozitářezměna starší verze jsou z pohledu Gitu stejný problém. Klon repozitáře, který si drží Kontr, uvidí jiné verze a odmítne je přijmout, což vyžaduje zásah administrátora.

Velikost repozitáře

Kontr běží na stroji Aisa a jako běžný uživatel má omezené místo na disku. 500 studentů dokáže neuváženým používáním repozitáře toto místo snadno vyčerpat, např. ukládáním binárních souborů, výstupů, záznamů přednášek a jiného odpadu do repozitáře.

Git ukládá soubory komprimovaně a snaží se zamezit duplikaci. Tedy,

  • Textové soubory jsou uložené velice efektivně, protože se snadno komprimují.

  • Binární soubory s téměř náhodným obsahem komprimace zmenší jen nepatrně.

  • Soubory se stejným obsahem se v Gitu uloží jenom jednou.

Pokud budete do repozitáře ukládat pouze zdrojové kódy a jiné malé textové soubory (např. CMakeLists.txt, vlastní poznámky atd.), nemusíte se překročení limitu bát. Problém nastane, pokud do repozitáře budete ukládat kompilované programy, výstupy programu, ladící informace, hudbu, filmy, záznamy přednášek atd.

Limit 10 MB na velikost je velice velkorysý. Při správném používání Gitu byste neměli překročit 200 kB za semestr.

Soubor .gitignore

Pokud je tento soubor umístěný v kořeni repozitáře, pak každý řádek popisuje vzor názvů souborů, které má Git ignorovat. Požadavek na existenci tohoto souboru je tedy prevence, kterou se snažíme studentům zabránit, aby překročili limit na velikost repozitáře.

Tipy

  • Nepoužívejte git add --all!

    Tento přepínač přidá do repozitáře všechny soubory kromě těch v `.gitignore`. Protože však pravidla v tomto souboru nemusí být dokonalá, můžete omylem přidat i nechtěné soubory.

  • Před git commit pečlivě čtěte výstup git status!

    Pokud uděláte při git add chybu, Git napoví, jak ji opravit.

  • Špatný commit lze před git push ještě opravit.

    Podívejte se na manuál příkazu git reset. Pokud nevíte, co s tím, raději se zeptejte cvičícího nebo konzultanta.

  • Velikost repozitáře lze odhadnout i před commitem.

    user@aisa:pb071$ git gc --aggressive
    user@aisa:pb071$ du -sh .git
  • Dávejte si pozor na Git v IDE.

    Některé nástroje v IDE jsou nepřehledné a mohou způsobit, že omylem něco v repozitáři pokazíte. Pečlivě čtěte všechna dialogová okna.