Verzi kezel s
Download
1 / 72

Verziókezelés - PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on

Verziókezelés. Verziókezelő rendszerek. Kulcsszavak. Verziókezelés Revision Control, Version Control, Source Control, Source Code Management (SCM) Verziókezelő rendszerek Version Control System (VCS) Distributed Revision Control (DRCS). Verziókezelés.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Verziókezelés' - zoltan


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Verzi kezel s

Verziókezelés

Verziókezelő rendszerek


Kulcsszavak
Kulcsszavak

  • Verziókezelés

    • Revision Control, Version Control, Source Control, Source Code Management (SCM)

  • Verziókezelő rendszerek

    • Version Control System (VCS)

    • Distributed Revision Control (DRCS)


Verzi kezel s1
Verziókezelés

  • Verziókezelés alatt több verzióval rendelkező adatok kezelését értjük. Leggyakrabban a mérnöki tudományokban és a szoftverfejlesztésben használnak verziókezelő rendszereket fejlesztés alatt álló dokumentumok, tervek, forráskódok és egyéb olyan adatok verzióinak kezelésére, amelyeken több ember dolgozik egyidejűleg. Az egyes változtatásokat verziószámokkal vagy verzióbetűkkel követik nyomon.






Felhaszn l si ter letek
Felhasználási területek

  • Elsősorban többszemélyes projektek esetében.

  • A legtöbb verziókezelő rendszert szoftverfejlesztési projektekben használták először, de egyes szövegszerkesztők, táblázatkezelők és egyes tartalomkezelő szoftverek is támogatják.

  • A beépített verziókezelés a wiki szoftvereknél is kulcsfontosságú. A wiki rendszerek integrált verziókezelői teszik lehetővé, hogy a felhasználók nyomon követhessék egymás szerkesztéseit, és visszaállíthassanak oldalakat azok korábbi verzióira, ezzel védekezve a vandalizmus és a spam ellen.


Alapjellemz k
Alapjellemzők

  • Definíció: a szoftver megépítéséhez szükséges források és más fájlok tárolása és megosztása

  • Biztonságosan

  • Ellenőrzött hozzáféréssel

  • A fájlok legújabb illetve korábbi változatainak megőrzésével


Alapjellemz k biztons g
Alapjellemzők: biztonság

  • Megbízható hardver (pl. RAID) – diszkhibák ellen

  • Rendszeres mentés, archiválás (Disaster recovery)

  • A fejlesztés történetének teljes rögzítése

    • Verziók azonosítása

    • Fejlesztői/kooperációs hibák ellen

    • Új verziók és javítások párhuzamos fejlesztéséhez


Alapjellemz k ellen rz tt hozz f r s
Alapjellemzők: ellenőrzött hozzáférés

  • Felhasználó-azonosítás

    • A változtatások névhez köthetők legyenek

    • A vétett hibák névhez köthetők legyenek

    • Jogosultságok bevezetése, védelem

  • Konkurencia-kezelés

    • Fájl szinten (párhuzamos módosítások)

    • Alkalmazás logikai szintjén (konzisztens állapotok, mérföldkövek megkülönböztetése)


Kezel si modellek
Kezelési modellek

  • Központosított modell (hagyományos): minden verziókezelési művelet egy közösen használt szerveren történik

  • Elosztott verziókezelő rendszerek: minden felhasználó gépe egy-egy külön tárolóként jelenik meg.



Alapm veletek
Alapműveletek

  • Lokális munkamásolat készítése (checkout)

  • Lokális másolat frissítése (update)

    • A lokális példány is már változhatott addigra!

  • Változások megtekintése, elemzése (log, diff, status)

  • Változások visszaírása a repositoryba (commit, checkin) Ez az egyetlen írási művelet a repository felé!


K zpontos tott modellek
Központosított modellek

  • Probléma: ha két, vagy több fejlesztő egyidejűleg próbálja módosítani ugyanazt a fájlt. Az ilyen (centralizált) rendszerek kétféleképpen oldják meg ezt a problémát (concurrency modell): lock-olással és merge-eléssel.

  • Lock modell(zárolás): Előnyök, hátrányok

  • Merge modell (összefésülés)


Elosztott rendszerek
Elosztott rendszerek

  • Nincs nagy központi adatbázis, csak munkamásolatok (working copies).

  • A gyakori műveletek gyorsak, mert nem kell központi szerverrel kommunikálni.

  • Minden munkamásolat egy-egy távoli backup, ami természetes védelmet ad az adatvesztés ellen.




K zponti vs elosztott konkl zi
Központi vs. Elosztott konklúzió

  • A központi: egyszerű, kiváló backup, undo, szinkronizáló műveletekre.

  • Elosztott: a valós élethez közelebb áll, összefésülés, elágazásra alkalmasabb, nem igényel folyamatos online jelenlétet, csak a változások megosztásánál. Sokkal gyorsabb nagy projekteknél, sok változtatás esetében, cserébe nehezebb menedzselni központilag.


Nyitott rendszer open system
Nyitott rendszer (open system)

  • Minden munkamásolat gyakorlatilag egy ág. (branch)

  • Minden ág egy-egy munkamásolatként implementálódik. Az ágak összefésülés patch-ek küldözgetésével történik.

  • Lehet válogatni az egyes változtatások között, nem kell feltétlenül minden változtatást letölteni.

  • Új tagok bármikor csatlakozhatnak a rendszerhez, nincs szükség szerveroldali regisztrációra.


P lda egy projektre
Példa egy projektre

Trunk: a fejlesztés fő vonala (baseline, mainline), jóváhagyott változata

Branch: elágazás, párhuzamosan fejlesztett változat

Tag: a fájlokhoz adott időpillanatban, adott ponton rendelt címke (label), ami a verziószámot jelöli (beszédesen, vagy számokkal).


M veletek fogalmak
Műveletek, fogalmak

  • Import: lokálisan tárolt adathalmaz, amely még nem munkamásolat, felmásolása a tárolóra és verziókontroll alá helyezése.

  • Export: hasonlít a checkout-hoz, de metaadatok nélküli tiszta publikálás.

  • Change, change list: a verziókezelt dokumentum változtatásai

  • Conflict: a változások összefésülésének problémája


Merge sszef s l s sz ks ge
Merge (összefésülés) szüksége

  • Ha egy felhasználó módosítja a saját munkamásolatát, majd letölt a szerverről egy másik módosított változatot. Ekkor a szerveren lévő változásokat össze kell fésülni a lokális munkapéldány változásaival a kliensen.

  • Ha a fejlesztésben elágazás történt, majd egy hibát kijavítottak valamely ágban, s a javítást alkalmazni kell a másik ágra is.

  • Ha a fejlesztésben elágazás történt, majd az ágakat különböző irányba fejlesztettek tovább, s a különböző fejlesztéseket össze kell vonni egy közös változatba (trunk-ba).


Verzi kezel rendszerek csoportos t si szempontjai
Verziókezelő rendszerek csoportosítási szempontjai

  • Repository modell szerint (központi, elosztott)

  • Támogatott platformok (Linux, Windows,..)

  • Költsége (ingyenes, fizetős, illetve licensze)

  • History modell (changeset, patch, snapshot)

  • Verzió-azonosító (Revision ID: namespace, sequence, pseudorandom)

  • Hálózati protokoll (http, https, ftp,sftp,ssh)


Akt v verzi k vet rendszerek
Aktív verziókövető rendszerek

  • Bazaar (ingyenes, elosztott)

  • Bitkeeper (utóbb fizetős, elosztott)

  • CVS (ingyenes, központi, egyik legrégebbi)

  • Subversion (SVN) (ingyenes, központi)

  • Visual SourceSafe (Microsoft, shared folder alapú, fizetős)


Subversion
Subversion

  • Általános, ingyenes CMS eszköz, changeset, snapshot alapú tárolás (csak a változást tárolja)

  • Többféle hálózati konfiguráció

    • Egygépes környezetben - file://

    • Kliens-szerver környezetben


Subversion1
Subversion

  • Támogatja:

    • Atomi commit

    • Fájl átnevezés

    • Szimbolikus linkek

    • Események pre/post kapcsolása

    • Unicode fájlok támogatása

    • Idegen repositoryk beágyazása

    • Részleges checkout/clone


Subversion telep t se
Subversion telepítése

  • Csomagból

    • Linux (Debian, Ubuntu) : apt-get install subversion

    • Windows

      • CollabNet

      • Tigris.org

      • SlikSVN (32, 64 bit kliens)

      • VisualSVN (szerver és kliens)

  • Forrásból


A subversion bemutat sa egy p ld n kereszt l
A Subversion bemutatása egy példán keresztül

  • Két projekt létrehozása: egy induló, üres projekt (MyProject1) és egy létező (MyProject2).

  • Cél: a meglévő projektek verzió kontroll felügyelet alá helyezése, illetve új projektek készítése az eszköz használatával


A strukt r k kialak t sa
A struktúrák kialakítása

SVN repository kialakítása:

  • cd /devdirs

  • mkdir svnlayout

  • mkdir svnlayout/{trunk,branches,tags}

    SVN adatbázis, projektkönyvtár létrehozása:

  • mkdir {svnrepos,projects}


T rol k l trehoz sa svnadmin create
Tárolók létrehozása (svnadmin create)

  • mkdir {svnrepos,projects}/{MyProject1,MyProject2}

  • svnadmin create --fs-type fsfs svnrepos/MyProject1

  • svnadmin create --fs-type fsfs svnrepos/MyProject2;



Strukt ra l trehoz sa
Struktúra létrehozása

  • cd svnlayout

  • svn import . file:///devdirs/svnrepos/MyProject1 --message 'Struktura letrehozasa‘

  • svn import . file:///devdirs/svnrepos/MyProject2 --message 'Struktura letrehozasa'


T rol k felt lt se s haszn latba v tele svn import
Tárolók feltöltése és használatba vétele (svn import)

  • cd /path/to/projectdir

  • svn import . file:///devdirs/svnrepos/MyProject2/trunk --message 'Mar kesz fajlok beimportalasa‘

  • cd /devdirs/projects/MyProject1

  • svn checkout file:///devdirs/svnrepos/MyProject1 .

  • cd /devdirs/projects/MyProject2

  • svn checkout file:///devdirs/svnrepos/MyProject2 .;


Revision
Revision

  • Svn-ben a fájlok változatait úgy nevezett revision numberrel azonosíthatjuk. Minden revision egyértelműen meghatározza minden fájl állapotát, tartalmát. A revision number minden commit után eggyel növekszik. Ez a szám az egész repositoryra vonatkozik, ellenben a CVS-sel, ami minden fájlt külön-külön számoz. Ez megkönnyíti egy-egy régebbi verzió megtalálását.


Revision el r se
Revision elérése

  • svn <cmd> -r <revision number

    Tartomány megadása (kettősponttal elválasztva):

  • svn <cmd> -r <revison number 1>:<revision number 2

  • HEAD

  • BASE

  • COMMITED

  • PREV

  • {dátum}


Revision p ld k
Revision példák

  • svn diff -r BASE:HEAD

  • svn diff --revision PREV:COMMITTED foo.c

  • svn checkout --revision {"2009-02-17 15:30"}

  • svn log --revision {2009-11-20}:{2009-11-29}


Alapvet munka ciklus 1
Alapvető munka ciklus #1

  • Módosítás előtt a legfrissebb változat kérése:

    • svn update

  • Változtatások elvégzése:

    • svn add

    • svn delete

    • svn copy

    • svn move


Alapvet munka ciklus 2
Alapvető munka ciklus #2

  • Történt változás azóta a repositoryban?

    • svn update

  • Ha szükséges, vonjuk vissza a változtatásaink

    • svn revert

  • Szüntessük meg a konfliktusokat (olvasszuk be mások változtatását)

    • svn update

    • svn resolved

  • Commitoljuk a változtatásainkat

    • svn commit


Working copy l trehoz sa svn checkout
Working copy létrehozása (svn checkout)

  • svn checkout http://example.org/svn/MyProject1 /home/user/dev/MyProject1


File hozz ad sa svn add
File hozzáadása (svn add)

  • svn status? first.file

  • svn add first.fileA first.file

  • svn commit -m 'first.file file hozzaadása'; Transmitting file data . Committed revision 2.


File t rl se svn del
File törlése (svn del)

  • touch second.file

  • svn add second.fileA second.file

  • svn commit -m 'second.file hozzaadasa‘Adding second.file Transmitting file data .. Committed revision 3.

  • svn del second.file D trunk/second.file

  • svn ci -m 'second.file torlese‘Deleting trunk/second.file Committed revision 4.


File thelyez se tnevez se svn mv
File áthelyezése, átnevezése (svn mv)

  • svn mv first.file first-moved.file A first-moved.file D first.file


Helyi v ltoztat sok visszavon sa svn revert
Helyi változtatások visszavonása (svn revert)

  • svn st M first.file D second.file

  • svn revert tmp.file Reverted 'second.file'

  • svn st M first.file


Szerveren l v v ltoz sok let lt se svn update
Szerveren lévő változások letöltése (svn update)

  • svn updateU first.file Updated to revision 8.


Branch l trehoz sa
Branch létrehozása

  • svn cp file:///devdirs/svnrepos/MyProject1/trunk file:///devdirs/svnrepos/MyProject1/branches/branch1 -m 'branch1 letrehozasa' Committed revision 13.

  • cd ..

  • svn up A branches/branch1 A branches/branch1/first.file A branches/branch1/second.file Updated to revision 13.


Sszeolvaszt s svn merge
Összeolvasztás (svn merge)

  • svn merge -r 13:HEAD file:///devdirs/svnrepos/MyProject1/branches/branch1 U svn-howto.wiki

  • svn ci -m 'branch1 beolvasztasa a fejlesztoi agba'Sending trunk/svn-howto.wikiTransmitting file data .Committed revision 15.

  • svn log --stop-on-copy


Sszeolvaszt s 2
Összeolvasztás #2

  • svn log --stop-on-copyr30 | ennevem | 2009-11-19 13:33:34 +0100 (Thu, 19 Nov 2009) | 2 lines branch1 utolso commitja r22 | ennevem | 2009-11-19 10:33:34 +0100 (Thu, 19 Nov 2009) | 2 lines branch1 letrehozasa


Sszeolvaszt s 3
Összeolvasztás #3

  • svn merge -r 21:30 file:///devdirs/svnrepos/MyProject1/branches/branch1

  • svn merge -r 13:14 file:///devdirs/svnrepos/MyProject1/trunk

  • cd /devdirs/projects/MyProject1/branches/branch1/ svn merge -r 12:13 file:///devdirs/svnrepos/MyProject1/trunk/file1 file1


Sszeolvaszt s 4
Összeolvasztás #4

  • cd /devdirs/projects/MyProject1/branches/branch1/

  • svn merge -c 13 file:///devdirs/svnrepos/MyProject1/trunk/


Tag l trehoz sa
Tag létrehozása

  • svn cp file:///devdirs/svnrepos/MyProject1/trunk file:///devdirs/svnrepos/MyProject1/tags/tag1 -m 'tag1 letrehozasa'


Visszat r s kor bbi verzi hoz
Visszatérés korábbi verzióhoz

  • svn merge -c -17 file:///devdirs/svnrepos/MyProject1/trunkU svn-howto.wiki

  • svn st M first.file

  • svn ci -m 'undoing change committed 17‘Sending trunk/first.file Transmitting file data. Committed revision 18.


Visszat r s kor bbi verzi hoz 2
Visszatérés korábbi verzióhoz #2

  • svn merge -r 19:16 file:///devdirs/svnrepos/MyProject1/trunkU first.file


T r lt f jl vissza ll t sa repositoryb l
Törölt fájl visszaállítása repositoryból

  • svn copy -r 14 file:///devdirs/svnrepos/MyProject1/trunk/deleted.file ./deleted.file


F jlok k nyvt rak figyelmen k v l hagy sa
Fájlok, könyvtárak figyelmen kívül hagyása

  • svn propset svn:ignore second.file .property 'svn:ignore' set on '.'

  • svn propset svn:ignore '*' tempfiles/


Konfliktusok kezel se
Konfliktusok kezelése

  • svn up C first.file Updated to revision 22.

  • ls -1 first.file first.file.mine first.file.r21 first.file.r22


Konfliktusok kezel se 2
Konfliktusok kezelése #2

  • svn ci -m 'try to commit' svn: Commit failed (details follow): svn: Aborting commit: '/devdirs/projects/MyProject1/trunk/first.file' remains in conflict

  • Lehetőségek:

    • Kézzel összeolvasztjuk a konfliktusban érintett fájlokat

    • Az egyik ideiglenes fájllal felülírjuk a munkafájlunkat

    • Futtatjuk az svn revert <filename> parancsot, amivel az összes változtatásunkat visszavonjuk


Konfliktusok kezel se 3
Konfliktusok kezelése #3

  • svn resolved first.file Resolved conflicted state of 'first.file'


K zi sszeolvaszt s
Kézi összeolvasztás

  • cat first.file 1. sor 2. sor 3. sor 4. sor <<<<<<< .mine John 5. sor John 6. sor John 7. sor ======= Joe 5. sor Joe 6. sor Joe 7. sor >>>>>>> .r25


K zi sszeolvaszt s 2
Kézi összeolvasztás #2

  • svn resolved first.file Resolved conflicted state of 'first.file‘

  • svn ci -m 'A sajat (John) modositasaink beolvasztasa Joe sorai ele' Sending first.file Transmitting file data . Committed revision 26.


Saj t verzi nk kik nyszer t se
Saját verziónk kikényszerítése

  • svn upC first.file Updated to revision 30.

  • ls first.file* first.file first.file.mine first.file.r29 first.file.r30

  • cp first.file.r30 first.file

  • svn resolved first.fileResolved conflicted state of 'first.file'



V ltoz sok visszak vet se svn log 1
Változások visszakövetése (svn log) #1

  • svn logr34 | ajnasz | 2009-08-16 00:43:21 +0200 (cs, 16 aug 2009) | 1 line konyvtarstruktura kiegeszitesek r33 | ajnasz | 2009-08-12 18:21:12 +0200 (v, 12 aug 2009) | 1 line typo, formazasok


V ltoz sok visszak vet se 2
Változások visszakövetése #2

  • svn log -r 10:20

  • svn log -r 20:10

  • svn log -r 23

  • svn log -r HEAD


V ltoz sok visszak vet se 3
Változások visszakövetése #3

  • svn log trunk/svn-howto.wiki

  • svn log http://example.com/svn/file.c -r HEAD


M dos t sok soronk nti ttekint se svn diff
Módosítások soronkénti áttekintése (svn diff)

  • svn diff first.file Index: first.file --- first.file (revision 43) +++ first.file (working copy) @@ -511,7 +511,7 @@ Lorem ipsum dolor - modositas + Módosítás Lipsum Lorem ipsum


M dos t sok soronk nti ttekint se 2
Módosítások soronkénti áttekintése #2


Patch k sz t se
Patch készítése

  • svn di > patch.file


Working copy hely nek megv ltoztat sa svn switch
Working copy helyének megváltoztatása (svn switch)

  • svn switch --relocate http://example.com/regihely http://example.com/ujhely .


Felhaszn l kezel s
Felhasználókezelés

  • [general] anon-access = read auth-access = write

  • password-db = jelszo_allomany

  • [USERS] felhasznalo = jelszo


Parancsokr l r viden
Parancsokról röviden

  • svn status

  • svn update

  • svn commit

  • svn add

  • svn delete

  • svn revert

  • svn diff


R vid t sek
Rövidítések

  • svn commit = svn ci

  • svn checkout = svn co

  • svn status = svn st

  • svn update = svn up

  • svn diff = svn di

  • svn delete = svn del vagy svn rm

  • svn move = svn mv

  • svn copy = svn cp

  • svn list = svn ls

  • svn switch = svn sw


ad