Tento návod má za cieľ ukázať jednoduchú prácu s Merge Requests. To je nástroj, ktorý sa často používa pri vývoji projektov v manažéroch repozitárov (GitLab, GitHub (tam sa to volá Pull Request)).
Idea je, že vývojár zmenu nenahraje priamo do repozitára, ale pripraví si návrh zmeny v novej vetve. Až je so zmenou spokojný, nahrá svoju novú vetvu do repozitára v GitLabe (alebo GitHube). Potom vytvori Merge Request, ktorým v podstate požiada správcov repozitára, aby jeho zmenu zaradili do svojho projektu.
Postup pre náhrady seminárov
Tento postup platí len pre semináre. Pri vývoji domácich úloh postupujte normálnym spôsobom, ktorý poznáte z prvého cvičenia. |
Ak niečo z postupu nie je jasné alebo sa zaseknete,
neváhajte sa opýtať nás, svojich cvičiacich.
Radi vám pomôžeme. |
Vo svojom repozitári na počítači alebo na Aise
napíšte príkaz git status
a skontrolujte,
že je repozitár čistý a nachádza sa v hlavnej vetve
(master
, main
alebo trunk
).
Ak tieto názvy nepoznáte, skúste si niekam zapísať, ako sa vaša
hlavná vetva volá.
Výstup príkazu by mal vyzerať zhruba takto (dôležité časti sú vyznačené červenou farbou):
aisa$ git status
On branch master # Alebo main, prípadne trunk.
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Ak ste v inej vetve, alebo sa Git sťažuje na neuložené zmeny v repozitári, nepokračujte! Vyčistite si najprv repozitár (urobte commity alebo zrušte zmeny), kým budete pokračovať. |
V repozitári napíšte príkaz:
aisa$ git checkout -b BRANCH
Switched to a new branch 'BRANCH'
Namiesto BRANCH
použite nejaký zmysluplný
názov vetvy. Napríklad, ak pracujete na seminári 6, môžete
si vetvu nazvať seminar-06
.
Stiahnite si kostru seminára do repozitára, rozbaľte ju a vypracujte. Napríklad, pre seminár 6 z príkladu vyššie môžete na Linuxe urobiť:
aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-06/pb071-seminar-06.zip
aisa$ unzip pb071-seminar-06.zip
# Vznikne adresár 'seminar-06'.aisa$ rm pb071-seminar-06.zip
aisa$ cd seminar-06
# Vypracujte cvičenie.
Rovnakým spôsobom, aký sa ukazoval na prvom cvičení,
urobte git add …
a git commit
pre každú zmenu, ktorú ste urobili.
Teraz nahrajte novú verziu na GitLab.
Príkaz git push
sám nestačí, pretože
repozitár na GitLabe vašu novú vetvu nepozná.
To však ide ľahko vyriešiť pridaním parametrov:
aisa$ git push origin BRANCH
...
remote: To create a merge request for BRANCH, visit:
remote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH
...
Vo výstupe príkazu by sa mal objaviť odkaz na vytvorenie Merge Request.
Ak taký odkaz vidíte, otvorte si ho v prehliadači a nasledujúci bod preskočte.
Otvorte si repozitár v GitLab FI,
- Na ľavom paneli kliknite na Merge Requests.
- Kliknite na New Merge Request.
- V Source branch vyberte login/pb071 vetva BRANCH, ktorú ste si vytvorili.
- V Target branch vyberte login/pb071 vetva master.
- Kliknite na Compare Branches and Continue.
Nasledujúca stránka môže vyzerať trochu mätúco, pozrite
sa však na obrázok. Najprv si skontrolujte (najvyšší červený rámček),
že vyrábate Merge Request z vašej novej vetvy
do vetvy master
.
Potom v časti Assignees zadajte svojich cvičiacich podľa skupiny:
- Skupina 07
xhanicov
,xlacko1
,xsutor
- Skupina 08
xkrchna1
,xlacko1
,xmarcin
Nakoniec stlačte Submit Merge Request.
Úlohy je možné odovzdávať len z vetiev uvedených v pravidlách predmetu. Preto, kým budete robiť čokoľvek ďalšie, vráťte sa do svojej hlavnej vetvy.
Najprv si znova, ako v bode 1, skontrolujte, že váš repozitár je čistý,
príkazom git status
. Bez čistého repozitára pre istotu nepokračujte.
Potom, príkazom git checkout BRANCH
sa prepnite do svojej
hlavnej vetvy BRANCH
.
Neviete, ktorá to je? Skúste príkaz git branch
, ktorý vypíše
vetvy vo vašom repozitári. Hlavná vetva sa typicky volá master
,
ale dá sa zmeniť v nastavení GitLabu na main
.
aisa$ git status
# Skontrolujte, že repozitár je čistý, ako v bode 1. # Ak viete, ako sa volá vaša hlavná vetva, nasledujúci bod môžete preskočiť.aisa$ git branch
# V zozname nájdite jednu z hlavných vetví; viac než jednu by ste mať nemali. # Ak sa vám výpis zobrazí tak, že predchádzajúce príkazy zmiznú, a nevidíte príkazový riadok, # tak sa program pustil v tzv.pager režime, ktorý stačí ukončiť stlačením q.aisa$ git checkout master
Vďaka tomuto postupu sa dozvieme o tom, že ste cvičenie vypracovali, a môžeme ho skontrolovať.