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.Levý panel → Members → Invite Member. 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ář přesuňte a vytvořte znovu podle návodu výše. Projekt lze přesunout v nastaveních: Project → Settings → Advanced (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.
-
Úkoly odevzdávejte ve větve
master
,main
, nebotrunk
.Použije se první existující větva z uvedených, bez ohledu na obsah ostatních. Odevzdání z větví, které nejsou vyjmenované v tomto bodu, není možné a nebude vyhodnoceno. Změna názvu větve od prvního odevzdání je pro účely vyhodnocovacího nástroje ekvivalentní změně historie repozitáře.
Účelem je vyjít vstříc uživatelům, kteří jsou zvyklý na
main
, který je výchozí pro GitHub, nebo mají tomu přizpůsobenou konfiguraci gitu. -
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áře a změ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.
Vhodnou konfiguraci naleznete v předmětovém manuálu. |
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ýstupgit 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.