Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje...

28
1 Mreže računala Predaja laboratorijskih vježbi Stjepan Groš

Transcript of Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje...

Page 1: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

1

Mreže računala

Predaja laboratorijskih vježbi

Stjepan Groš

Page 2: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

222Mreže računala

Sadržaj

• Pravila predaje laboratorijskih vježbi

• Program Subversion

• Neka pravila pisanja koda

• Raspodjela lozinki

• Bonus slajdovi• Kreiranje vlastitog repozitorija

Page 3: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

333Mreže računala

Pravila predaje laboratorijskih vježbi (1)

• Ovaj način predaje vrijedi isključivo za vježbe s programiranjem

• Svaki student dobit će pristup vlastitom repozitoriju

• Tijekom izrade vježbe potrebno je barem nekoliko puta predati kod

• Tko preda samo jednom vježbu, i to odmah gotovu, dobit će nula bodova (ako ne i negativne!)

• Svaki predani kod mora se moći kompajlirati bez grešaka

• Plus je ako ima ograničenu funkcionalnost koja se može isprobati

Page 4: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

444Mreže računala

Pravila predaje laboratorijskih vježbi (2)

• (Skoro) svaki tjedan određen broj studenata morat će odgovarati vježbe

• Od upisanih studenata bira se podskup S

• Od skupa S, slučajnim putem će se odabirati podskup P koji će morati kolokvirati vježbu

• Svi ostali studenti dobijaju pune bodove

• Kazne negativni bodovi, ili uskraćivanje potpisa• Studenti koji predaju vježbu koja nije gotova

• Prepisivanje

• ...

Page 5: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

555Mreže računala

Pravila predaje laboratorijskih vježbi (3)

• Dosta stvari nije definirano!• Biranje skupova S i P

• Još ništa nije rečeno/definirano za zadatke s konfiguriranjima

• Prihvaćaju se konstruktive sugestije

• Repozitoriji će biti neko (kratko) vrijeme na raspolaganju radi učenja/eksperimentiranja

Page 6: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

666Mreže računala

Program Subversion (1)

• Pripada skupini programa za upravljanje kodom• versioning control system, (source) code management,

revision control...

• Upravljanje kodom je problematično• Ako se razvoj odvija na više različitih računala

• Kad kod naraste iznad određene veličine

• Kada na njemu radi više različitih osoba• Potencijalno međusobno vrlo udaljenih

• Kada su istovremeno u upotrebi različite verzije koda

Page 7: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

777Mreže računala

Program Subversion (2)

• Kod se drži na jednom mjestu• Naziva se repozitorij

• Centralizirani model

• Pristup repozitoriju je isključivo putem odgovarajućih programa

• Direktna manipulacija nije dopuštena (niti je moguća)!

• Nakon što su učinjene željene modifikacije kod se predaje u repozitorij

• Uvećava se slijedni broj (revizija)

• Sve prethodne revizije se pamte

Page 8: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

888Mreže računala

Program Subversion (3)

• Subversion omogućava• Spajanje različitih revizija koda, praćenje promjena, ...

• Za Mreže računala poslužitelj će biti na fakultetskom računalu

• Pristupat će mu se putem vlastitog korisničkog imena i zaporke

• Alati za pristup repozitoriju

• naredba svn

• subclipse dodatak za Eclipse razvojno okruženje

• Windows Explorer dodatak: TortoiseSVN

Page 9: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

999Mreže računala

Ciklus rada s programom Subversion

• Kreiranje repozitorija

• Inicijalni unos koda

• Dohvat lokalne kopije

• Promjena kopije• Manipulacija kopije

• Sinkronizacija s verzijom na poslužitelju

• Predaja koda na poslužitelj

Page 10: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

101010Mreže računala

Dohvat lokalne kopije (1)

• Sintaksasvn co <URL_repozitorija>

• Iz repozitorija se dohvaća zadnja revizija koda i smješta u tekući direktorij

Page 11: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

111111Mreže računala

Dohvat lokalne kopije (2)

• Primjer$ svn co file:///tmp/example/repoA repo/trunkA repo/branchesA repo/tagsChecked out revision 1.

• U tekućem direktoriju je kopija zadnje revizije unutar direktorija repo/

• Dohvaćena je revizija 1

• svn svoje meta-informacije drži u skrivenom direktoriju .svn/

• Nalazi se u svakom poddirektoriju

Page 12: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

121212Mreže računala

Promjena lokalne kopije (1)

• Na lokalnoj kopiji se radi "normalan" razvoj koda• Uređivanje, prevođenje, traženje grešaka...

• Dodavanje nove datoteke/direktorijasvn add <ime datoteke ili direktorija>

• Status lokalne kopijesvn status

• Lokalne promjenesvn diff [<ime datoteke>]

Page 13: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

131313Mreže računala

Promjena lokalne kopije (1)

• Recimo da smo napisali datoteku hello_world.c

• Datoteku smo kreirali u trunk/ direktoriju!

• Za status lokalnog repozitorija ćemo dobiti sljedeće:

$ svn status? trunk/hello_world.c

• Upitnik znači da Subversionu nije poznata datoteka!

• Dodavanje nove datoteke/direktorija$ svn add trunk/hello_world.cA trunk/hello_world.c

• Datoteka je sada dodana pod kontrolu svn-a

Page 14: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

141414Mreže računala

Promjena lokalne kopije (3)

• Možemo ponovo pogledati status$ svn statusA trunk/hello_world.c

• A označava da će datoteka (direktorij) biti dodan u repozitorij

Page 15: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

151515Mreže računala

Promjena lokalne kopije (2)

• Želimo li vidjeti promjene u lokalnom repozitoriju$ svn diffIndex: trunk/hello_world.c=======================================--- trunk/hello_world.c (revision 0)+++ trunk/hello_world.c (revision 0)@@ -0,0 +1,6 @@+#include <stdio.h>++int main(int argc, char **argv)+{+ printf("Hello World!\n");+}

Page 16: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

161616Mreže računala

Predaja koda u repozitorij (1)

• Sintaksasvn ci

• Prije samog slanja traži upis dnevnika promjena

• Neka pravila za pisanje dnevnika promjena• Navesti konceptualne promjene

• Ne objašnjavati koje su linije/datoteke mijenjane

• Jedna promjena po liniji

• PrimjerDodana autentifikacija poslužiteljaUklonjen ispitni kod

Page 17: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

171717Mreže računala

Predaja koda u repozitorij (2)

• Primjer$ export VISUAL=vi$ svn ci[Otvara se editor i upisuju promjene]Adding trunk/hello_world.cTransmitting file data .Committed revision 2.

• Pogledajmo sada status lokalne kopije$ svn status$

• Nije ispisano ništa budući da lokalnih promjena nema

Page 18: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

181818Mreže računala

Dodatne promjene na kodu (1)

• Pretpostavimo da smo promijenili hello_world.c

• Dodali smo return 0 nakon printf

#include <stdio.h>

int main(int argc, char **argv){ printf("Hello World!\n"); return 0;}

• Ako pogledamo status dobit ćemo$ svn statusM trunk/hello_world.c

• M označava da lokalna kopija ima promjenu

Page 19: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

191919Mreže računala

Dodatne promjene na kodu (2)

• Ako sada pogledamo razliku dobit ćemo$ svn diffIndex: trunk/hello_world.c=======================================--- trunk/hello_world.c (revision 2)+++ trunk/hello_world.c (working copy)@@ -3,4 +3,5 @@ int main(int argc, char **argv) { printf("Hello World!\n");+ return 0; }

• Znak '+' označava dodanu liniju• Javlja se i znak '-' za uklonjene linije

• Oko promjene je kontekst

Page 20: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

202020Mreže računala

Neke dodatne operacije na lokalnoj kopiji (1)

• Sinkronizacija repozitorija s lokalnom kopijomsvn up

• Promjene koje su učinjene u repozitoriju uključuje u lokalnu kopiju

• Moguća je pojava konflikta (slovo C u ispisu)

• Znači da svn nije mogao pozdano integrirati promjene

• Razrješavanje konflikta je onda ostavljeno korisniku

• Bit će kreirano nekoliko datoteka (ekstenzije .mine, .rXXX, .rYYY i originalna datoteka)

• Nije moguće poslati promjene u repozitorij dok se ne razriješi konflikt

Page 21: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

212121Mreže računala

Neke dodatne operacije na lokalnoj kopiji (2)

• Brisanje datoteke/direktorijasvn rm <ime datoteke ili direktorija>

• Tijekom idućeg slanja promjena u repozitorij datoteka će biti uklonjena

• Poništavanje lokalnih promjenasvn revert <ime datoteke>

Page 22: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

222222Mreže računala

Struktura direktorija u repozitoriju

• U trunk/ je uvijek pohranjena najnovija verzija

• U tags/ će biti pohranjene završne verzije koda

branch/

tags/

trunk/

lab1/

lab2/

lab6/

lab1/

lab2/

lab6/

Page 23: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

232323Mreže računala

Predaja završne verzije labosa(!)

• To će se obavljati kreiranjem tag-a!svn copy <URLtrunk> <URLtags>

• Primjer završetka 1. labosa

svn copy \https://mr.zemris.fer.hr/svnrepo/ime.prezime/trunk/lab1 \https://mr.zemris.fer.hr/svnrepo/ime.prezime/tags/lab1

• Mora se upisati zabilješka o promjenama!

• Nakon toga može se osvježiti lokalna kopija

Page 24: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

242424Mreže računala

Neka pravila pisanja koda

• Jako dobro paziti na uzubljivanje koda

• Biti konzistentan

• Dobro komentirati kod

Page 25: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

252525Mreže računala

Dodatni slajdovi

• Kreiranje vlastitog repozitorija

• Inicijalno unošenje koda u repozitorij

• Dodatna literatura

Page 26: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

262626Mreže računala

Kreiranje vlastitog repozitorija

• Bez obzira kako se pristupa repozitoriju kreiranje je istosvnadmin create

• Primjer• Kreirati direktorij u kojemu će biti repozitorij

mkdir repo

• Pozicionirati se u direktorijcd repo

• Kreirati repozitorijsvnadmin create .

• URL repozitorija: file:///<putanja do repo>/repo/

Page 27: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

272727Mreže računala

Inicijalno unošenje koda u repozitorij

• U nekom privremenom direktoriju kreirati trunk/, tags/ i branches/ poddirektorijemkdir trunk tags branches

• Izvršiti unossvn import . file://<URL repozitorija> \

-m 'Inicijalni unos'

• Privremeni direktorij se sada može ukloniti• Za daljnji rad potrebno je dohvatiti lokalnu kopiju!

Page 28: Mreže računala Predaja laboratorijskih vježbi. Predaja labosa.pdf · •Ovaj način predaje vrijedi isključivo za vježbe s programiranjem •Svaki student dobit će pristup vlastitom

282828Mreže računala

Dodatna literatura

• Općenito o VCS programima• http://en.wikipedia.org/wiki/Revision_control

• Web stranice projekta Subversion• http://subversion.tigris.org

• Uputa za svn na hrvatskom jeziku• http://www.osl.fer.hr/programming_course/