Sistemi kontrole verzija

Similar documents
Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

Podešavanje za eduroam ios

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

SAS On Demand. Video: Upute za registraciju:

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Port Community System

Bušilice nove generacije. ImpactDrill

PROJEKTNI PRORAČUN 1

Uvod u relacione baze podataka

Tutorijal za Štefice za upload slika na forum.

Otpremanje video snimka na YouTube

Upute za korištenje makronaredbi gml2dwg i gml2dgn

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

Windows Easy Transfer

BENCHMARKING HOSTELA

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Nejednakosti s faktorijelima

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

RANI BOOKING TURSKA LJETO 2017

1. Instalacija programske podrške

STRUČNA PRAKSA B-PRO TEMA 13

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

Office 365, upute za korištenje elektroničke pošte

Advertising on the Web

za STB GO4TV in alliance with GSS media

CRNA GORA

mdita Editor - Korisničko uputstvo -

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

Pokretanje izvršnog fajla

Tema 11:Objektno orijentisane metodologije razvoja softvera

Klasterizacija. NIKOLA MILIKIĆ URL:

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Mogudnosti za prilagođavanje

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

Babylon - instalacija,aktivacija i rad sa njim

Priprema podataka. NIKOLA MILIKIĆ URL:

3D GRAFIKA I ANIMACIJA

Pravljenje Screenshota. 1. Korak

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

KABUPLAST, AGROPLAST, AGROSIL 2500

Mindomo online aplikacija za izradu umnih mapa

Struktura i organizacija baza podataka

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

3. Obavljanje ulazno-izlaznih operacija, prekidni rad

4.1 Korišćenje aplikacije Ćelije Rukovanje radnim listovima... 32

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Upotreba selektora. June 04

AUDIO-VIZUELNA SREDSTVA

3D ANIMACIJA I OPEN SOURCE

Poglavlje 1 POČETAK RADA SA MICROSOFT OFFICE-OM 2016

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

Kapitalizam i otpor u 21. veku

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

Bear management in Croatia

FAKULTET ZA POSLOVNU INFORMATIKU

P R O J E K T N I R A D

KORISNIČKO UPUTSTVO ZA SVR MANAGER SAMSUNG

Aplikacija za podršku transferu tehnologija

SOFTVERSKO INŽENJERSTVO INTELIGENTNIH SISTEMA

IZRADA TEHNIČKE DOKUMENTACIJE

DEUS CARITAS EST SATB Choir, Soloist, Organ. œ œ. œœœœœ. œ œœœ œ œ œ

Elektrotehnički fakultet Operativni sistemi 1 u Beogradu. File System

11 Analiza i dizajn informacionih sistema

WWF. Jahorina

IMPLEMENTACIJA TEHNIKA ZA POVEĆANJE BROJA PODRŽANIH KONKURENTNIH KORISNIKA VEB SAJTA

TESTIRANJE SOFTVERA SANJA MIJALKOVIĆ 1061/2013

24th International FIG Congress

Materijali za pripremu usmenog ispita Predmet: Procesi razvoja softvera

Visoka škola strukovnih studija za informacione i komunikacione tehnologije. SMS Gateway. Dr Nenad Kojić

APLIKACIJA ZA ŠIFROVANJE FAJLOVA NA WEB-U

VEŽBA 4 TOOLS - RAD SA ALATIMA

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU. Diplomski rad. Beograd, Novembar 2016.

Informacioni sistem za izvještavanje baziran na indikatorima (IRIS) Korisničko upustvo. Verzija 1.0

SelmetAssetBO. Aplikacija za popis osnovnih sredstava na osobnom računalu. Korisnički priručnik. ver. RGN d.o.o. datum zadnje izmjena:

Posmatrani i objekti posmatraci

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

Naslov originala: Paulo Coelho, O VENCEDOR ESTA SO.

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

SKINUTO SA SAJTA Besplatan download radova

2. poglavlje - IDENTIFIKACIJA POTROŠAČA - od 62 do 80 strane (19 strana)

SVEUČILIŠTE U ZAGREBU FAKULTET PROMETNIH ZNANOSTI FORENZIČKA ANALIZA MOBILNIH TERMINALNIH UREĐAJA ALATOM NOWSECURE FORENSICS

Transcription:

Sistemi kontrole verzija (Version Control Systems) Principi softverskog inženjerstva (SI3PSI, MS1PSI) Laboratorijska vežba br. 1 Predavač: Dražen Drašković, asistent Autori: Dražen Drašković, Nenad Vitorović Verzija: 20.03. 2015. 1

Kako trenutno radimo Radimo na kodu Imamo smislenu celinu Nešto je profunkcionisalo Ispravili smo neku grešku Spremni smo da napravimo "snimak" toga Zato što je potpuno dobro Zato što nastavljamo rad, plašimo se da nešto ne "pokvarimo" (backup) Ako radimo u timu Možda želimo da podelimo sa drugima Možda još neko vreme da zadržimo samo za sebe ne ugroziti druge! Da li šaljemo kod mailom? :-/ 2

Kako je to podržano alatima SVN Centralizovani sistem verzionisanja (VCS) Podržava vođenje istorije, i pravljenje "snimaka" Ne dozvoljava da u jednom momentu stanje projekta perzistiramo, a da tek naknadno podelimo to sa drugima Istog momenta kada perzistiramo, to je vidljivo i drugima Git/Mercurial Distribuirani sistem verzionisanja (DVCS) Podržava isto što i SVN Moguće perzistiranje stanja projekta više puta, pre deljenja sa drugima 3

Šta je prirodno? Develop Develop Develop Develop Develop Develop Develop 4

GIT koncepti Pored centralnog repozitorijuma, i svaki korisnik ima sve kod sebe: Čitavu istoriju izmena svoje i tuđe Kompletne podake o repozitorijumu Nije neophodno da korisnik bude na mreži da bi koristio git (što za SVN ne važi!) Korisnici mogu međusobno sarađivati i mimo centralnog repozitorijuma: Perin radni direktorijum je udaljeni repozitorijum za Miku Working tree: Svaki korisnik ima i svoj radni direktorijum: tekuće stanje, koje nije verzionisano (sačuvano u istoriji) 5

Git init Repozitorijum se mora INICIJALIZOVATI Komanda git init se izvršava u direktorijumu koji želimo da služi za verzionisanje Unutar tog direktorijuma, napravi.git direktorijum, koji sadrži sve informacije o repozitorijumu. Poziva se uz opciju bare za pravljenje foldera pod kontrolom gita na serveru: git bare init Samo obezbeđuje da se ne vide fajlovi 6

Dodavanje udaljenog repozitorijuma Dodavanje glavnog deljenog repozitorijuma (remote): git remote add origin URI_DO_REPO-a Remote sa nazivom origin je glavni udaljeni repozitorijum. git remote add origin xy110xxxd@rtidev5.etf.rs:gitdir Moguće je dodati i druge udaljene repozitorijume, sa proizvoljnim nazivima git remote add pomocni file://dropbox/deljeni.git 7

Radni direktorijum Provera stanja: git status Da li ima fajlova koji se ne prate (nisu registrovani) Da li ima promena u fajlovima koji se prate Dodavanje fajlova u praćenje: git add Moguće dodavanje pojedinačnih fajlova (navesti ime) Moguće i sve dodati: git add. git add <path_to_file> Dodaje novi fajl u verzionisanje Za postojeći, izmenjeni fajl, 8

Komitovanje Komitovanje: beleženje tekućeg stanja jednog ili grupe fajlova u istoriji Komit (commit): Jedna tačka u istoriji git repozitorijuma, koja sadrži skup jednog ili grupe fajlova (predstavlja verziju) Stage Index: podskup izmena koje su napravljene u odnosu na prethodni commit, a koje su odabrane za novi commit Promene odabrane preko git add To su novi fajlovi i izmene postojećih Ne nužno SVE načinjene promene moguća je selekcija navođenjem putanja do željenih fajlova (pravi podskup) Prilikom izvršavanja operacije commit, samo promene koje su na stage-u ulaze u istoriju, ostale promene ne 9

Komitovanje git commit Celina koju bismo sačuvali je u radnom direktorijumu Pre commit, izmenjeni fajlovi moraju se stage-ovati, komandom git add, koja se ovog puta odnosi na sadržaj izmena fajla Fajlovi koji nisu staged, ne bivaju komitovani Moguće odabrati samo deo fajlova čije stanje želimo da čuvamo Neophodno ostaviti poruku sam git ne dozvoljava drugačije Argument: git commit -m "Tekst poruke za komit" Preskakanje stage-a: git commit a m "..." 10

Praktičan primer Napravimo index.html Izmenimo nekakav tekst git status git add index.html git commit m "Prvi commit" Napravimo contact.html Izmenimo index.html git status git commit m "Drugi commit" Šta je na repozitorijumu? Šta drugi vide? git log git status 11

Radni direktorijum Izmenjeni postojeći fajl Dodat novi fajl Verzija 11. 03. 2014. 12

Izmena stavljena na stage. Pri commit, ta izmena ostaje zabeležena u istoriji. Radni direktorijum Fajl izmenjen u prethodnom komitu Verzija 11. 03. 2014. 13

Radni direktorijum Fajl izmenjen pre prethodnog komita. Nije bio stage-ovan, ali njegove izmene ostaju u radnom direktorijumu Novi komit Fajl izmenjen u novom komitu Verzija 11. 03. 2014. 14

Kako radi git? Prati promene u fajlovima Za svaki fajl koji želimo commit-ovati Na staging-u, git locira promene u fajlovima: koji red je izbačen, koji red je ubačen Jedan commit predstavlja promene koje smo načinili nad poslednjim commit-om Efektivno, evidentiraju se razlike u fajlovima Razlike u istoriji: git log p Razlika diff 15

Uklanjanje i preimenovanje fajlova Uklanjanje: git rm filename Ručno uklonjen fajl ipak izvršiti ovu komandu (čak iako više ne postoji), kako bi ga git uklonio iz evidenicije Zaustavljanje praćenja, uz zadržavanje fajla u lokalu: git rm -cached filename Preimenovanje: git mv filename Ili ručno preimenovanje, a zatim git rm oldname git add newfile 16

Poništavanje promena Skidanje fajla sa stage-a: git reset HEAD <file> Fajl ostaje izmenjen, samo ne učestvuje u komitu Undo add, efektino Poništavanje promena git checkout -- <file> Fajl se vraća na stanje u kom je bio u prethodnom komitu (sve izmene se anuliraju) Moguće specificirati sa kog od ranijih komitova se uzima fajl Vraćanje unazad, na neku od ranijiih revizija (vraćanje kroz vreme): git checkout 0d1d7fc32 Heksadecimalna oznaka revizije, dostupna preko git log 17

Rad sa drugima Potreban "centralni" repozitorijum, deljen sa drugima Inicijalno dovlačenje sa udaljenog (deljenog) repo-a: git clone <path_to_repo> git clone short_remote_name Kreira direktorijum istog naziva kao udaljeni repozitorijum, unutar njega se nalazi.git direktorijum i svi fajlovi koji pripadaju tom repozitorijumu. Dovlačenje promena: git pull Dovlači promene sa udaljenog repozitorijuma, i spaja ih sa komitovima koji nisu poslati na taj repozitorijum Odakle se dovlači? Podrazumevano, radi se sa repozitorijumom koji smo klonirali (origin), ako se ne zada eksplicitno putanja ili naziv remote repozotorijuma 18

Rad sa drugima Slanje promena: git push Šalje na udaljeni repozitorijum sve načinjene komitove, koji nisu na njemu Moguće poslati promene na neki od udaljenih repozitorijuma Gde se šalje? Podrazumevano, radi se sa repozitorijumom koji smo klonirali (origin), ako se ne zada eksplicitno putanja ili naziv remote repozotorijuma 19

Čuvamo dalje izmene, verzionišemo ih, ali NE ZATRPAVAMO DRUGE neproverenim kodom 20

Rad sa drugima Izmene nad istim fajlom Osoba koja pull-uje poslednja, mora uraditi merge Merge spajanje dva stabla izmena: lokalno stablo sa stablom sa udaljenog repozitorijuma Git pokušava automatski da uradi merge Ako pri pull ne uspe automatski merge, neophodno ručno Kada se dešava neuspeh automatskog merge-a? Izmenjena ista linija koda konflikt; alat ne uzima odgovornost za merge => moramo ručno Git prikazuje upozorenje Komanda git mergetool pokreće alat za merge konflikata (Meld, Diff3, ) Kada se završi merge (bilo automatski, bilo ručno, razrešenjem konflikta), potrebno je napraviti commit za završeni merge 21

Kako to izgleda? Commit nastao merge-om Urađen pull sa stabla dev 2 (svetloplava) na stablo dev 3 (zelena) 22

23

Razni git koncepti Remotes Push/pull: na repozitorijum koji je kloniran, podrazumevano Pored "centralnog" repozitorijuma, moguće koristiti i druge repozitorijume (istog projekta). Npr, kolega koji je klonirao centralni repozitorijum želi da podeli nešto samo sa vama => koristiti njegov repozitorijum za pull git remote add short_remote_name remote_uri git push short_repo_name Tagging: oznavačanje verzija koje predstavljaju koherentne celine (milestones npr.). Mogući proizvoljni nazivi. Uglavnom se koriste nomenklature verzionisanja SW. Stash Pull i merge uspevaju jedino sa čistim radnim direktorijumom Ili sve komitovano, ili gurnuto u stranu (stashed) Ignorisanje: napraviti.gitignore fajl u korenu git repozitorijuma; sadrži putanje do fajlova koje ne želimo da nikada add-ujemo i pratimo ili izraz koji to čini za grupu fajlova *.png #nijedna slika application/log/* #nijedan fajl iz log dir application/random/todolist.txt #konkretni f 24

Branching Paralelni razvoj u više nezavisnih tokova unutar istog repozitorijuma - branching Uvek postoji glavna razvojna grana (main) Postoje specijalno kreirane grane, obično za nestabilne izmene, ili radi nezavisnog razvoja različitih funkcionalnosti git checkout <branch_name> Naredba checkout kreira granu sa nazivom branch_name, ako ona ne postoji, odnosno radni direktorijum prelazi u tu granu, ukoliko već postoji. 25

Branching Dalji commit-ovi predstavljaju istoriju te grane, nezavisnu od istorije main grane Povratak na main granu: git checkout main Grane se mogu push-ovati i pull-ovati, kako bi više ljudi moglo da radi na različitim granama. Kada je paralelna grana zrela, ona se spaja sa glavnom razvojnom: pozicioniramo se na main granu, uradimo pull sa odvojene grane Spajanje dve grane gotovo identično kao pull sa udaljenog repozitorijuma! 26

Git tok rada rekapitulacija 1. git clone repo 2. git add <untracked_file> 3. git add <changed_file> 4. git commit m "..." 5. Ponavljati 2..4 više puta 6. git pull 1. git mergetool, ako postoje konflikti 2. git commit, onoga što se dobilo spajanjem lokalnih sa udaljenim izmenama 7. git push, opciono, nekada, kada je potrebno podeliti izmene sa drugima. 27

Napomene Samo fajlovi se registruju, ne i direktorijumi Ne postoji način da se verzioniše direktorijum, samo fajlovi u njemu Alati: #1 - Source Tree, za Mac/Windows GitCola, zahteva python, Za Linux Unutar IDE: phpstorm (Jetbrains) odlična integrisana podrška podrška u Eclipse-derived alatima kroz egit plugin TortoiseGit relativno nepregledno Terminal/konzola Daleko ugodnije na Linux-u 28

Prednosti git-a Bolja podrška paralelnom razvoju Bolja izolacija Moguće eksperimentisati, praviti komitove a da se ništa ne poruši drugima pritom Nije neophodna mreža Branch: jako efikasno, bez previše mučenja korisnika Daleko brži od SVN Sve na lokalnoj mašini, pa je pregled istorije mnogo brži, kretanje kroz revizije je daleko brže... 29

SVN Klijent-server arhitektura Server pamti sve promene ikada napravljene nad datotekama Podržava pomeranje i kopiranje fajlova Moguće praćenje praznog direktorijuma Omogućuje tagging Verzija koja se smatra stabilnom se "označi": 1.0.0,... Moguć branching Od glavnog razvojnog stabla, odvaja se nova kopija tekućeg sistema U paraleli, nezavisno, razvijaju se i glavna (originalna) i nova grana 30

SVN koncepti Manipuliše direktorijumom, datotekama, i prati verzije Slično kao git, svaki fajl ponaosob Repozitorijum se ne posmatra kao celovit, već svaki direktorijum nezavisno predstavlja repozitorijum Svaki korisnik ima samo radni direktorijum lokalnu kopiju, a jedino mesto gde se nalaze podaci o izmenama koje su nastale je centralni repozitorijum! Neophodna mreža da bi se videla istorija izmena i sl. 31

Operacije svn import <repository_uri> Kreira ceo radni direktorijum kao jednu verziju koda u repozitorijum (ova komanda se koristi kada počinjete projekat). Sadržaj radnog direktorijuma je najnovija verzija na repozitorijumu. svn checkout Kopira najnoviju verziju iz repozitorijuma u radni direktorijum svn add Dodaje novi fajl koji ranije nije bio verzionisan. Naći će se u repozitorijumu pri narednoj operaciji commit. svn update Ažurira radni direktorijum najnovijom verzijom iz repozitorijuma (može se navesti i tačno kojom verzijom kretanje kroz istoriju). Moguće je da dođe do konflikta pri spajanju (slično kao kod git). Svi konflikti se moraju razrešiti pomoću merge alata. 32

Operacije svn commit slanje radne verzije u repozitorijum, tako da ona postane nova glavna tj. tekuća revizija fajla/direktorijuma. Moguće je komitovati određeni poddirektorijum ili određene datoteke, njihovim navođenjem u nastavku komande svn status Prikazuje razike radnog direktorijuma sa stanjem na repozitorijumu svn remove <file> briše fajl i obeležava ga za brisanje (ovaj fajl će biti obrisan i iz repozitorijuma pri sledećoj operaciji commit) svn cp <file> svn mv <file> 33

Minimizovanje konflikta pri spajanju (merge) Pri izvršavanju operacije update, moguće je da dođe do konflikta. Konflikt nastaje ako je na repozitorijumu već izmenjen fajl koji je izmenjen i u lokalnom radnom direktorijumu. Organizovati podelu posla tako da se izbegne da više članova tima radi nad istim fajlom. Koliko često raditi commit sa SVN? Previše često nije dobro - mnogo grešaka u radu; Retka upotreba nije dobra - rad sa neažurnim kodom, gubljenje vremena na rešavanju problema koji su drugi članovi tima već otklonili; Ne postoji čvrst konsenzus, jedino dobro pravilo za upotrebu u praksi je da pre zadavanja operacije commit budemo sigurni da se kod koji upisujemo u repozitorijum može kompajlirati. U slučaju git, operacija commit nema ovih problema, jer nije istog trenutka vidljiva ostalim članovima tima, a daje novu tačku u istoriji projekta. 34

SVN: Tok rada Pre unošenja izmena u radnu verziju koda, prvo treba uraditi UPDATE, da ne bismo menjali neažurnu verziju koda, što opet može da dovede do velikih konflikata pri spajanju. Kod git, ovo nije slučaj 1. svn checkout <REPO_URI> 2. # izmene fajlova 3. svn commit 4. #novi radni dan 5. svn update 6. # izmene fajlova 7. svn commit 1. Ako postoji novija verzija, commit neće uspeti 1. svn update #dovući najnoviju verziju sa repozitorijuma 2. Merge (spajanje, ručno prihvatanje promena) 3. svn commit 8. if(!kraj radnog dana) goto 6 9. # kraj radnog dana 10. goto 4 35

Šta koristiti? Servisi: Github - social coding, jedino git, javni repozitorijumi, provatni se plaćaju BitBucket - git, mercurial: mogući free javni i privatni, do 5 osoba u timu free Google Code - gasi se u avgustu 2015. godine!!! (preporuka: migrirati na GitHub, Bitbucket, i SourceForge, ručno ili uz automatske alate) GIT, SVN i Mercurial mogu raditi i sa fajlsistemom, samo koristiti folder koji se deli nekim od servisa kao centralni repo Obezbediti da vam neko pristupa repozitorijumu: SSH Dropbox, Google drive (moguće, probajte), box 36