mreže računala predaja laboratorijskih vježbi. predaja labosa.pdf · •ovaj način predaje...
TRANSCRIPT
1
Mreže računala
Predaja laboratorijskih vježbi
Stjepan Groš
222Mreže računala
Sadržaj
• Pravila predaje laboratorijskih vježbi
• Program Subversion
• Neka pravila pisanja koda
• Raspodjela lozinki
• Bonus slajdovi• Kreiranje vlastitog repozitorija
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
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
• ...
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
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
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
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
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
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
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
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>]
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
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
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");+}
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
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
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
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
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
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>
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/
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
242424Mreže računala
Neka pravila pisanja koda
• Jako dobro paziti na uzubljivanje koda
• Biti konzistentan
• Dobro komentirati kod
252525Mreže računala
Dodatni slajdovi
• Kreiranje vlastitog repozitorija
• Inicijalno unošenje koda u repozitorij
• Dodatna literatura
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/
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!
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/