GitLab repozitář
Po začátku semestru se všem studentům v předmětu vytvoří repozitář ve fakultním GitLabu. V tomto repozitáři se budou objevovat kostry cvičení, stejně jako kostry domácích úkolů.
Pravidla
Ve výuce používame automatizační skripty, které očekávaní příčetnou práci s repozitářem.
| Porušení těchto pravidel může způsobit technické problémy na straně automatizace a bude penalizováno 5 body. |
-
Je zakázáno měnit historii ve větvi
main.V této větvi nepoužívejte
git commit --amendanigit rebase. -
Je zakázáno upravovat větev
seminarsa větve tvaruhw‹N›/0.GitLab by měl těmto změnám zabránit, ale přesto dávejte pozor.
-
Maximální povolená velikost repozitáře je 15 MB.
Nenahrávejte do repozitáře zbytečné soubory, jako slidy z přednášek, videa a obrázky.
|
Nebojte se Git používat
I přes pravidla se nemusíte bát Git používat. Klidně si v repozitáři ukládejte kódy z cvičení, tak se naučíte Git používat lépe. Git má i několik vlastních ochran, které vám zabrání udělat chybu.
|
Postupy
Pro práci s repozitářem jej musíte nejdříve naklonovat na svoje zařízení. Můžete mít více klonů (třeba na Aise a na vlastním počítači), jen si dejte pozor, abyste si změny mezi klony správně propagovali.
| Pokud si nastavíte SSH klíč, nebudete muset při práci s GitLabem zadávat heslo. |
Stáhnutí repozitáře
-
Klon
Pro stáhnutí repozitáře proveďte příkaz:
$ git clone https://gitlab.fi.muni.cz/pb160/‹YEAR›/‹LOGIN›.git pb160Místo
‹YEAR›doplňte rok, místo‹LOGIN›doplňte svůj fakultní login (xprijmenineboxuco). -
Konfigurace
Nastavte si svůj e-mail a jméno.
$ cd pb160 $ git config user.email '‹LOGIN›@fi.muni.cz' $ git config user.name '‹FIRST NAME› ‹LAST NAME›'K příkazům můžete přidat přepínač
--global. Nastavení se pak použijí pro všechny vaše repozitáře, pokud je v projektu nezměníte. -
Repozitář je připraven
Obecný postup pro práci s repozitářem
Kdykoliv chcete pracovat s repozitářem, je vhodné se naučit postup pro udržení konzistence mezi vaším klonem a GitLabem. Jinak se může stát, že nějakou práci zapomenete a způsobíte konflikt.
-
Zjistěte stav repozitáře
V repozitáři pomocí příkazu
git statusověřte, že jste ve větvimaina nemáte žádné rozpracované změny:$ git status On branch main Your branch is up to date with 'origin/main'. nothing to commit, working tree clean-
Pokud v příkazu výše vidíte
On branch hw‹N›/…, pak jste ve špatné větvi; použijtegit switch main. -
Pokud místo
nothing to commit, working tree cleanvidíte nějaké změnené soubory, pak tyto změny nahrajte nebo zrušte.
-
-
Aktualizujte repozitář
Stáhněte si aktuální stav repozitáře:
$ git pullPokud příkaz selže, došlo ke konfliktu. Jazykové modely obvykle umí tyto problémy vyřešit snadno. Pokud si však nejste jisti nebo máte pocit, že vám model radí hlouposti, neváhejte napsat do fóra.
-
Můžete pracovat
Postup pro práci na semináři nebo pro domácí úkol naleznete níže.
-
Vytvoření nové verze
Do nové verze byste měli vložit pouze zdrojové soubory. Binární soubory, dočasné soubory a logy se obecně v repozitáři neuchovávají. Vizte taky seznam ignorovaných souborů
.gitignorev kořeni repozitáře.-
Seznam změněných souborů zjistíte příkazem
git status. -
Změnené nebo nové soubory přidejte do nové verze příkazem
git add ‹FILE₁› ‹FILE₂›…. -
Novou verzi vytvořte příkazem
git commit.
Můžete vytvořit i víc než jednu verzi. Soubory ve stavu
Untracked files, které do verze přidávat nechcete (třeba binární soubory nebo logy), smažte nebo nechte tak. -
-
Ješte jědnou ověřte stav repozitáře
Ověřte si příkazem
git status, že nemáte žádné soubory ve stavuChanges not staged for commitneboChanges to be committed. Taky si ověřte, žeUntracked filesse nevypíše, nebo obsahuje pouze dočasné soubory nebo binárky. -
Uložte změny na GitLab
Následující příkaz odešle aktuální větev na GitLab. Můžete přidat přepínač
--all, pokud chcete odeslat všechny větve.$ git push -
Hotovo
Práce na cvičení
-
Začátek: Vykonejte úvodní příkazy z obecného postupu
Výše taky naleznete postup pro stáhnutí repozitáře, pokud jej ještě nemáte.
-
Pracujte ve větvi
mainPoužijte
git status; pokud chcete změnit větev, použijtegit switch main. -
Stáhněte si kostru
Proveďte příkaz
$ git merge --no-ff seminars-
Pokud se otevře editor, pouze uložte automaticky vytvořenou zprávu a ukončete jej.
-
Pokud dojte k chybě, oslovte cvičící.
-
-
Můžete pracovat
Kostra semináře se objeví v adresáři
seminar-‹WEEK›pro daný týden. -
Konec: Vykonejte finální příkazy z obecného postupu
Práce na domácím úkolu
Po zveřejnění části A úkolu N vznikne v repozitáři projektu větev hw‹N›/0, kterou nemodifikujte.
Dále vznikne větev hw‹N›/a, ve které můžete pracovat.
Po zveřejnění části B neupravujte hw‹N›/a, ale pracujte nad větví hw‹N›/b, která vznikne automaticky.
Tato větev bude obsahovat všechny změny z hw‹N›/a.
-
Začátek: Vykonejte úvodní příkazy z obecného postupu
-
Pracujte ve větvi
hw‹N›/anebo `hw‹N›/bČíslo úkolu dosaďte do
‹N›, třebahw1/anebohw3/b. Použijtegit status; pokud chcete změnit větev, použijtegit switch hw‹n›/anebohw‹N›/b.Zde není třeba provádět
git merge. -
Můžete pracovat
Kostra úkolu se objeví v adresáři
hw‹N›. -
Konec: Vykonejte finální příkazy z obecného postupu
Pokyny pro domácí úkoly
Odevzdání
-
Odevzdáním se rozumí
git commitagit pushz větve pro domácí úkol.Pro účely splnění časových omezení se rozumí právě tyto dvě operace. Pokud provedete
git commitvčas, a zapomenetegit pushnebo ho provedete pozdě, pak se to nepovažuje za včasné odevzdání. Používejtegit statusa pořádně čtěte výstup! -
Nevytvářejte a neupravujte Merge Request!
Hodnocení a zpětnou vazbu dostanete v Merge Request, kterou vytvoří automatický skript, pokud nalezne nějakou změnu v
hw‹N›/anebohw‹N›/b. Tento Merge Request nezavírejte, neupravujte, ani neklikejte na Approve nebo Merge!
Odevzdání pro opravu kvality kódu
Pokud opravující žádá o opravu chyb, přidá do Merge Request komentáře, které začínají FIX:.
Opravu provedete následujícím způsobem.
| Nezavírejte ani nerušte existující Merge Request! |
-
Úpravy provádějte ve větvi s řešením
Pro část A použijte
hw‹N›/a, nehw‹N›/b. Nevytvářejte žádné další větve. -
Proveďte opravu kódu
Každou změnu můžete i nadále nahrávat do větve pomocí
git push, GitLab stav existujícího MR automaticky aktualizuje. -
Nerušte poznámky recenzentů
GitLab umožňuje v Merge Request označit poznámky jako Finished. Nedělejte to, skripty opravu uznají pouze pokud opravu uzná opravující.
-
Požádejte o další kontrolu
Když jste s opravou spokojeni, požádejte o novou kontrolu.
-
Vedle jména opravujících byste měli vidět ikonu , stačí na ní kliknout.
-
Někdy tuto ikonu však GitLab nezobrazí. V takovém případě stačí na kartě Overview napsat komentář, ve kterém opravující označte (
@login) a nechte jim vzkaz, např.@xlacko1 I fixed all the problems. Please re-review this assignment.
-
|
Nebojte se diskutovat o opravě
Pokud poznámce v odevzdání nerozumíte, můžete k ní přidat komentář a doptat se.
Pokud se i přes diskusi s opravujícími domníváte, že je oprava špatně, zeptejte se cvičících nebo napište na xlacko1@fi.muni.cz.
|
Opravující jsou s odevzdáním spokojení, co dál?
Nemusíte dělat nic.
Pokud máte OK z obou částí úkolu, skripty by měli Merge Request akceptovat.
Pokud chcete, můžete si úkol zařadit do větve main.
|
Následující operace neprovádějte, pokud nemáte OK z obou částí úkolu |
-
Začátek: Vykonejte úvodní příkazy z obecného postupu
-
Ověřte si, že Merge Request pro obě části je ve stavu Merged
Pokud tomu tak není, nepokračujte, ale kontaktujte cvičící.
-
Pracujte ve větvi
mainPoužijte příkazy
git statusa případněgit switch main. -
Zařaďte úkol do hlavní větve
$ git merge --no-ff hw‹N›/0Za
‹N›dosaďte číslo úkolu. Pozor, není tohw‹N›/aanihw‹N›/b, alehw‹N›/0(nula). -
Konec: Vykonejte finální příkazy z obecného postupu
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. -
Nepoužívejte příkazy s
-fnebo--force!Tyto přepínače obvykle vypnou některé ochrany Gitu. Pokud na takový příkaz narazíte a netušíte, co dělá, nepoužívejte ho a kontaktujte raději někoho zkušenějšího.
-
Před
git commitpečlivě čtěte výstupgit status!Pokud uděláte při
git addchybu, Git napoví, jak ji opravit. -
Špatný commit lze před
git pushještě opravit.Podívejte se na manuál příkazu
git reset. Pokud nevíte, co s tím, raději se zeptejte. -
Velikost repozitáře lze odhadnout i před commitem.
$ git gc --aggressive $ 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.