1 / 8

Projektiranje in organizacija informacijskih sistemov

Projektiranje in organizacija informacijskih sistemov. Sistemi za nadzor razli čic (version control). Čemu služi sistem za nadzor različic?. Sistem shranjuje zgodovino razvoja ... česarkoli

cyndi
Download Presentation

Projektiranje in organizacija informacijskih sistemov

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projektiranje in organizacija informacijskih sistemov Sistemi za nadzor različic(version control)

  2. Čemu služi sistem za nadzor različic? • Sistem shranjuje zgodovino razvoja ... česarkoli • V praksi ga uporabljamo praktično samo v programskem inženirstvu, za shranjevanje izvorne kode, konfiguracijskih datotek... • Razvijalec mora imeti možnost potegniti iz arhiva staro različico in jo popravljati, saj ima vsaka druge hrošče • Preprosto shranjevanje (vsakodnevnih) kopij ni dobra rešitev, saj • so te kopije skoraj identične (škoda prostora!) • ta sistem zahteva disciplino (te nimamo!) • ta sistem ustvarja zmedo (ki je je tako ali tako dovolj) • Omogoča: • shranjevanje starih različic • primerjanje različic • istočasno delo več ljudi, ne da bi kdaj kdo komu povozil kodo • nadzor, kdo je spremenil kaj in kdaj • beleženje različic kode, uporabljene v posamezni različici aplikacije • preprosto javno distribucijo zadnje različice programa • preprosto avtomatsko dnevno preskušanje programa (predavanje “Dobra praksa”)

  3. Rešitve istočasnega spreminjanja datotek • Distribuirani model: vsak ima svoj “repozitorij” • “glavni” izda kodo • kdor jo pobere ima pri sebi lokalni repozitorij različic • spremembe objavi kot “changeset” – “snapshot” kode • “glavni” lahko vključi “changeset” v “uradno” različico; ta korak je lahko zapleten • arch (GNU), TeamWare (Sun), BitKeeper (BitMover): • Zaklepanje • vse lokalne datoteke so samo za branje (read only) • dovoljenje za pisanje ima hkrati lahko le en razvijalec • Visual Source Safe (MS); ne uporablja ga niti Microsoft ;) • problemi • kaj, če bi dva razvijalca rada spreminala različne dele programa • če ima nekdo predolgo zaklenjeno datoteko, bodo drugi obupali in kršili pravila • Združevanje • vsak lokalno spreminja, kar in kadar želi • preden shrani datoteko na repozitorij, mora vanjo dodati spremembe, ki so jih medtem naredili drugi(to navadno ni težko, tipično gre kar avtomatsko) • CVS (GPL), SVN (Gnu) in večina drugih

  4. Terminologija RepositoryMesto, kjer so shranjene datoteke; navadno na strežniku ModulV terminologiji CVS je to posamezen projekt ali zaokrožen del projekta BranchVeja(-e), v katerih vzporedno razvijamo različne verzije aplikacije in jih kasneje potencialno združimo TagOznaka več datotek; uporabno za označevanje različic ob izdaji RevisionVerzija datoteke (npr. revision 1.183 je lahko 183. verzija) ConflictNastopi, kadar sta dva razvijalca spreminjala isto datoteko (na istem mestu?) Operacije ImportUvoz datoteke (modula) v repozitorij ExportIzvoz iz repozitorija na lokalni računalnik (klienta) Check-outKot export, vendar tako, da je mogoče spremenjene datoteke ponovno “oddati” na repozitorij Update (tudi sync)Prevzemanje zadnje različice datoteke iz repozitorija MergeZdruževanje sprememb iste datoteke v novo, združeno različico Commit (tudi submit, check-in)Shranjevanje spremenjene datoteke na repozitorij (sem spada tudi brisanje datoteke) HistoryZgodovina sprememb datoteke (lahko tudi grafična, z vejami...) DiffRazlika med lokalno datoteko in ekvivalentno verzijo na repozitoriju ali med dvema poljubnima verzijama iste datoteke AnnotateIzpis avtorjev posameznih vrstic neke verzije

  5. Nekateri sistemi:CVS (Concurrent Versions System) • najpopularnejši (počasi ga izrinja SVN, subversion) • razvil ga je Dick Grune, da bi Erik Baalbergen in Maarten Waage, ki sta imela različne delovne navade glede urnika, lahko sodelovala pri razvoju prevajalnika za C • CVSNT, verzija za Windows, je imela toliko koristnih dodatkov, da so jih prenesli nazaj na Unix • dostop je lahko tudi samo read-only (za “nečlane”) • omogoča veje (branch) in oznake (tag) • “delta compression”: namesto celih datotek shranjuje spremembe • diff je samo zbirka zabeleženih sprememb • merge uveljavi spremembe med verzijama • proženje dogodkov (“eventov”) na strežniku • omejitve • ni preimenovanja datotek (moramo jih zbrisati in jih dodati z novim imenom) • direktorijev ni mogoče prenašati ali preimenovati (isti trik) • omejena podpora za datoteke z imeni v Unicodeu • delta-compression ne deluje za binarne datoteke

  6. Nekateri sistemi:CVS (Concurrent Versions System): klienti • cvs • ukazna vrstica; prek tega delujejo vsi drugi klienti) • cvs –d :sspi:cvs@estelle.fri.uni-lj.si:/CVS –Q update –r stable -f • izgleda strašljivo, a ni • omogoča klicanje iz skript • WinCVS • GUI – preprostejši, anekoliko okoren • TortoiseCVS • integracija z Explorerjemoz. Total Commanderjem • program meseca naSourceForgeu WinCVS

  7. Nekateri sistemi:SVN (Subversion) • Namen SVN je odpraviti pomanjkljivosti CVS; SVN naj bi zamenjal CVS (kot je ta zamenjal RCS) • Precej razvijalcev, ki so razvijali na CVS, zdaj dela na SVN • Podoben CVS, nekateri klienti (Tortoise) so za CVS samo “prepisani” v različice za SVN • Zanimivost: projekt je plačan s strani CollabNeta, ki je lastnik kode, vendar je ta pod licenco, ki je zelo podobna GPL • Prednosti pred CVS: • “Atomic Commit”: če commit ne uspe popolnoma, ne uspe • Preimenovanje datotek, premikanje in preimenovanje direktorijev • Izboljšana (učinkovitejša) tag in branch • Delta-kompresija binarnih datotek • Projektov, ki uporabljajo CVS (še) nima smisla prestavljati (niti avtorji ne priporočajo migracije), za nove projekte pa ni razloga proti SVN

  8. Literatura • Wikipedia: • http://en.wikipedia.org/wiki/Version_control • http://en.wikipedia.org/wiki/Concurrent_Versions_System • http://en.wikipedia.org/wiki/Subversion_%28software%29 • Domače strani CVS in SVN

More Related