Verziókezelés - PowerPoint PPT Presentation

Verzi kezel s
Download
1 / 72

  • 75 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.

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

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://example.com/svn/trunk@10 http://example.com/svn/trunk@12


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