Verzi kezel s
This presentation is the property of its rightful owner.
Sponsored Links
1 / 72

Verziókezelés PowerPoint PPT Presentation


  • 59 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Verziókezelés

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.


P lda horde repository

Példa (Horde repository)


P lda horde readme revision

Példa (Horde README revision)


P lda readme annotation

Példa (README Annotation)


P lda google docs

Példa (Google Docs)


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.


P lda k zponti verzi kezel

Példa: Központi verziókezelő


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

Központi vs. elosztott


K zponti vs elosztott1

Központi vs. Elosztott


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;


Haszn lhat protokollok

Használható protokollok


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'


Szerveren l v verzi elfogad sa

Szerveren lévő verzió elfogadása

  • svn revert <filename>


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

  • svn diff -r 40:42 first.file

  • svn di http:[email protected] http:[email protected]


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


  • Login