Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Verziókezelés Verziókezelő rendszerek. Kulcsszavak Verziókezelés Revision Control, Version Control, Source Control, Source Code Management (SCM) Verziókezelő."— Előadás másolata:

1 Verziókezelés Verziókezelő rendszerek

2 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)

3 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.

4 Példa (Horde repository)

5 Példa (Horde README revision)

6 Példa (README Annotation)

7 Példa (Google Docs)

8 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.

9 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

10 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

11 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)

12 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.

13 Példa: Központi verziókezelő

14 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é!

15 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)

16 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.

17 Központi vs. elosztott

18 Központi vs. Elosztott

19 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.

20 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.

21 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).

22 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

23 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).

24 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)

25 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)

26 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

27 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

28 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

29 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

30 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}

31 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;

32 Használható protokollok ProtokollElérési mód file:///Elérés közvetlenül a helyi fájlrendszeren keresztül WebDAV-on keresztülWebDAV https://Elérés SSL titkosítással ellátott WebDAV-on keresztülSSL svn://Elérés az SVN saját protokollján keresztül svn+ssh://Elérés az SVN saját protokollján, SSH titkosított csatornán keresztülSSH

33 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'

34 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.;

35 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.

36 Revision elérése svn -r

37 Revision példák svn diff -r BASE:HEAD svn diff --revision PREV:COMMITTED foo.c svn checkout --revision {" :30"} svn log --revision { }:{ }

38 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

39 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

40 Working copy létrehozása (svn checkout) svn checkout /home/user/dev/MyProject1

41 File hozzáadása (svn add) svn status ? first.file svn add first.file A first.file svn commit -m 'first.file file hozzaadása'; Transmitting file data. Committed revision 2.

42 File törlése (svn del) touch second.file svn add second.file A 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.

43 File áthelyezése, átnevezése (svn mv) svn mv first.file first-moved.file A first-moved.file D first.file

44 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

45 Szerveren lévő változások letöltése (svn update) svn update U first.file Updated to revision 8.

46 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.

47 Ö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.wiki Transmitting file data. Committed revision 15. svn log --stop-on-copy

48 Összeolvasztás #2 svn log --stop-on-copy r30 | ennevem | :33: (Thu, 19 Nov 2009) | 2 lines branch1 utolso commitja r22 | ennevem | :33: (Thu, 19 Nov 2009) | 2 lines branch1 letrehozasa

49 Ö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/branch 1/ svn merge -r 12:13 file:///devdirs/svnrepos/MyProject1/trunk/file1 file1

50 Összeolvasztás #4 cd /devdirs/projects/MyProject1/branches/branch 1/ svn merge -c 13 file:///devdirs/svnrepos/MyProject1/trunk/

51 Tag létrehozása svn cp file:///devdirs/svnrepos/MyProject1/trunk file:///devdirs/svnrepos/MyProject1/tags/ tag1 -m 'tag1 letrehozasa'

52 Visszatérés korábbi verzióhoz svn merge -c -17 file:///devdirs/svnrepos/MyProject1/trunk U 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.

53 Visszatérés korábbi verzióhoz #2 svn merge -r 19:16 file:///devdirs/svnrepos/MyProject1/trunk U first.file

54 Törölt fájl visszaállítása repositoryból svn copy -r 14 file:///devdirs/svnrepos/MyProject1/trunk /deleted.file./deleted.file

55 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/

56 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

57 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 parancsot, amivel az összes változtatásunkat visszavonjuk

58 Konfliktusok kezelése #3 svn resolved first.file Resolved conflicted state of 'first.file'

59 Kézi összeolvasztás cat first.file 1. sor 2. sor 3. sor 4. sor >>>>>>.r25

60 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.

61 Saját verziónk kikényszerítése svn up C 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.file Resolved conflicted state of 'first.file'

62 Szerveren lévő verzió elfogadása svn revert

63 Változások visszakövetése (svn log) #1 svn log r34 | ajnasz | :43: (cs, 16 aug 2009) | 1 line konyvtarstruktura kiegeszitesek r33 | ajnasz | :21: (v, 12 aug 2009) | 1 line typo, formazasok

64 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

65 Változások visszakövetése #3 svn log trunk/svn-howto.wiki svn log -r HEAD

66 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

67 Módosítások soronkénti áttekintése #2 svn diff -r 40:42 first.file svn di

68 Patch készítése svn di > patch.file

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

70 Felhasználókezelés [general] anon-access = read auth-access = write password-db = jelszo_allomany [USERS] felhasznalo = jelszo

71 Parancsokról röviden svn status svn update svn commit svn add svn delete svn revert svn diff

72 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


Letölteni ppt "Verziókezelés Verziókezelő rendszerek. Kulcsszavak Verziókezelés Revision Control, Version Control, Source Control, Source Code Management (SCM) Verziókezelő."

Hasonló előadás


Google Hirdetések