Pripremiti razvojnu okolinu
Prema uputama ili na sličan način pripremiti razvojno okruženje.
Provjeriti je li sve instalirano i radi. Npr. naredbama:
$ cd ~ #ili gdje želite smjestiti kod $ git clone --depth=1 https://github.com/ljelenkovic/Benu.git osur-lab $ cd osur-lab $ rm -rf .git $ cd Chapter_08_Processes/06_Processes $ make qemuAko sve radi (i pokrene se) onda prekinuti simulaciju (Ctrl+C) te obrisati privremeno izrađene datoteke:
make cleanall
.
Ako nešto ne radi (nedostaje neki alat) pogledati upute za pripremu razvojne okoline.
$ make cleanall && cd ../..
Osnovni rad s git-om
Pogledati upute Osnovno o Git-u.
Više se može pronaći u skripti, ali i na webu, iz drugih izvora, npr. link1, link2, link3.
Napraviti korisnički račun i repozitorij na github ili gitlab
- Upute za navedeno nalaze se na stranicama nuditelja usluga.
- Ime repozitorija neka bude jednako kratici predmeta:
osur
- Repozitorij treba biti privatan.
- Ne koristiti mogućnost sustava da sam napravi početni prazan repozitorij. Problem je što početna grana ponekad nije "master" (nego main ili slično) što stvara probleme kasnije. Repozitorij napraviti prema uputama ispod.
- Za korištenje repozitorija potrebno je napraviti ključeve (upute: gitlab, github), primjerice naredbama:
$ ssh-keygen -t ed25519 -C "ime.prezime@fer.hr" -f gitlab_kljuc $ mv gitlab_kljuc gitlab_kljuc.pub ~/.ssh/
Dodati u~/.ssh/config
(napraviti ga ako ne postoji):Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/gitlab_kljuc
Kopirati sadržajgitlab_kljuc.pub
(javni ključ, najčešće izgleda:ssh-ed25519 [nešto] ime.prezime@fer.hr
) na github/gitlab. - Postaviti početni sadržaj repozitorija (nastavak na naredbe od točke 1)
$ cd ~/osur-lab
- Dodati datoteku
student.txt
u kojoj navesti JMBAG, ime i prezime (odvojene tabulatorom:0036123456<tab>Pero<tab>Horvat<razmak>Perić<novi-red>
). - Inicijalizirati početni sadržaj repozitorija:
$ git init $ git config user.name "Ime Prezime" $ git config user.email "ime.prezime@fer.hr" $ git remote add origin git@gitlab.com:username/osur.git #ili github, username => vaš login na tom sustavu $ git add . $ git commit -m "Pocetno stanje" $ git push -u origin master
- Dodati grane lab1-lab6
Svaku laboratorijsku vježbu treba raditi u zasebnoj grani. Stoga je prije početka izgradnje vježbi potrebno napraviti sve grane, a tek onda pojedinu izrađivati u svojoj grani, a da bi se jednostavnom usporedbom neke grane i početne mogle vidjeti promjene napravljene za tu vježbu.
$ git branch lab1 $ git branch lab2 $ git branch lab3 $ git branch lab4 $ git branch lab5 $ git branch lab6 $ git push --all origin
Više o granama u tekstu u nastavku. - Dodati na projekt korisnika
ljelenkovic
(s ovlastima za promjene). Studenti koji ponavljaju to moraju također (opet) napraviti (bez obzira što su možda labose napravili prošle godine)!
Raditi promjene - izrađivati laboratorijske vježbe
Svaku laboratorijsku vježbu raditi u zasebnoj grani labX
(X je 1,2,3,4,5 ili 6).
Ukratko o granama u gitu
Mehanizam grananja je složen. Pojednostavljeno je to "paralelni svijet" stanja koda. Stvaranje nove grane je stvaranje "paralelnog svijeta" koji je u trenutku stvaranja jednak grani iz koje je stvoren (slično kaofork()
).
Prebacivanje s trenutne grane na granu druga-grana
radi se sa:
git checkout druga-granaPrije promjene grane treba trenutnu pohraniti, ako je mijenjana (ili ostaviti promjene za novu granu). Osnovna namjena grana jest ispitivanje neke nove ideje/funkcionalnosti i sl. Ako bi ta ideja bila dobra onda bi se prihvatila (spojila s glavnom granom, tj. s
master
). Inače se lako odbaci (ili ostavi neka stoji jer ne smeta).Nova grana se može stvoriti sa:
$ git branch ime-granete sa:
$ git checkout -b ime-graneRazlika je što u drugom slučaju se odmah prebacujemo u tu granu. Stvaranje grane
lab1
i prelazak na tu granu:
$ git checkout -b lab1Promjena grane s trenutne na neku drugu (npr. na postojeću
lab2
):
$ git checkout lab2Prije promjene grane "spremiti" napravljene promjene! Npr. ako se radi na grani
lab1
i želimo otići na granu lab2
:
$ git status # On branch lab1Ako ima promjena, tj. ne kaže:
nothing to commit (working directory clean)
, onda prvo spremiti promjenu:
git add -A #ali prije obrisati nepotrebne datoteke!!! [...] $ git commit -m "nedovrseno" [...] $ git checkout lab2 [...]Prilikom stvaranja nove grane, nova grana "nasljeđuje" zatečeno stanje (zatečeno u trenutnoj grani, tj. u radnom direktoriju (kao i kod
forka
)).
Grane u laboratorijskim vježbama
Početna grana naziva semaster
i ona mora ostati nepromijenjena.
Zadatke treba rješavati u zasebnim granama (lab1-lab6).
Na taj način se vrlo jednostavno prate promjene napravljene za pojedinu
vježbu (npr. git diff master..lab1
).
Spremanje aktivne grane u zajednički repozitorij radi se sa:
$ git push origin ime-granePretpostavka je da je lokalno bila aktivna grana
ime-grane
. Inače će se trenutno aktivna grana pohraniti u repozitorij kao grana ime-grane
!
Spremanje svih grana (odjednom) može se napraviti sa:
$ git push --all originNovije verzije git klijenta omogućavaju postavljanje opcije da
git push
automatski pohranjuje sve grane na poslužitelj.
Dohvat koda iz repozitorija u kojem ide više grana ovisi je li se
repozitorij dohvaća prvi puta ili ažurira postojeći.
Ako se dohvaća prvi puta naredbom git clone
, onda će se dohvatiti i sve grane. Ako već postoji lokalna kopija, ali nije ažurna, onda se grane mogu
dohvaćati jedna po jedna (sa git pull ime-grane
) ili sve odjednom:
$ git remote update $ git pull --all
Ukratko - što sve treba napraviti za LAB0
- Napraviti privatni repozitorij na gitlab/github-u.
- Početni sadržaj repozitorija prema opisanom (kod, grane lab1-lab6 u početku jednake grani master).
- Dodati u projekt korisnika
ljelenkovic
.
Dodatne upute
- Dodatne upute za pripremu/izgled repozitorija (i njegovo popravljanje).
- Skripta za provjeru repozitorija