Verziókezelő rendszer
A HupWiki-ből...
Tartalomjegyzék |
Mi is ez?
Ismert még a következő neveken: VCS azaz Version Control System, SCM azaz Source Code Management és Revison Control
Voltál már olyan helyzetben, hogy 6 napi megfeszített munka után egy rossz billentyű lenyomásával tönkretetted az egészet? Ilyenkor előjön belőled a rejtett vadállat, és nyomban a földbe építenéd a monitort, de ez sem egy járható út. (Nyilván ilyen nem fordulhat elő, ha az Emacs a társad :)
Persze nem te vagy az első, aki így pórul járt, ezért az okosak megírták a verziókezelő rendszereket, amiben minden változtatásodat nyomon követheted.
Röviden: a verzió kezelés alá helyezett fájlok az időben történt tartalmi változásait tárolni és katalógizálni, továbbá képes előállítani a fájlok meghatározott időpontbeli tartalmát.
Mit tud ez?
A verziókezelő rendszerek általában ilyen dolgokra képesek, hogy:
- A rendszerben tárolt minden fájl, minden egyes jóváhagyott/ beküldött verzióját elő lehet hívni/ le lehet tölteni.
- Tetszőleges két verzió közti különbségeket meg tud mutatni.
- Felügyeli, hogy egyszerre többen ne írják ugyanazt a fájlt. Ha ketten is küldenek be ugyanazon fájl, ugyanazon változatához változást, akkor megpróbálja a változásokat összefésülni. Ha nem sikerül akkor az ütközéseket a később jóváhagyó ember számára jól észrevehetően jelzi.
- Lehetővé teszi, hogy egy fájlból elágazásokat hozzunk létre. Pl. a BSD fejlesztése során elterjedté vált hogy létezik egy STABLE egy CURRENT és egy HEAD ág. (Ezt a fejlesztési módszert a Debian fejlesztői csapata is átvette tőlük.)
- Ahogy egykori matektanárom ilyenkor fel szokta tenni a kérdést: 'Olcsóbb lesz-e ettől a kenyér?' Ami nála azt jelentette, hogy 'Miért is jó ez nekünk?!' Nos azért, mert így pl. egy programból kiadott stabil verzióra elkészítjük a javítást, és ki lehet adni a program stabil változatából javított verziót, valamint a program fejlesztői ágába is bele tudjuk ezeket a változtatásokat fésülni, így a program fejlesztőinek nem kell a javítást kétszer elkészíteniük (kivéve persze, ha közben a kód is sokat változott).
- egyéb.
Ez kell nekem! Honnan tudom letölteni?
Ne olyan hevesen! Először is tisztázni kell, hogy milyen megoldások léteznek.
Nyílt forrású, központosított:
Nyílt forrású, elosztott:
Zárt forrású, központosított:u
- Rational ClearCase
- IBM CMVC (Configuration Management and Version Control)
- Microsoft SourceSafe
- Perforce
Zárt forrású, elosztott:
A verziókezelő rendszerekről egy nagyon jó összehasonlítás található itt. Egy másik összehasonlítás a Wikipedián.
Szótár
Fogalmak
- Repository
- Az a hely, (katalógus) ahol a verzió követésre kijelölt fájlok, dokumentumok vátlozatait tárolják. Néha depot-nak vagy röviden repo-nak nevezik.
- Working copy
- Munkamásolat. A repository egyik verziójának fájljairól készült helyi másolat. A repositoryba kerülő fájlok innen származnak.
- Branch
- Magyarul ág esetleg fork a verziókövető rendszerben tárolt fájlok egy csoportja amit legágaztattak az eredeti forrásból és azután külön életet él. Például egy szoftverből készítenek egy speciális változat az egyik ügyfélnek azok fájlok átmásolódnak a másik ágba és megkezdik különálló életüket.
- Revision
- Magyarul verzió vagy version, egy változat (állapot) a változatok között.
- Tag
- Egy megjelölt, fontos változat (állapot) a verziók között. Ez általában egy jól megjegyezhető beszédes név vagy kód.
- Konfliktus
- Konfliktus akkor fordul elő, ha ketten módosították ugyanazt a fájlt módosítják és mindketten megpróbálják feladni a változásokat. Csak az elsőnek sikerül a feladás. A konfliktus feloldására általában emberi beavatkozásra van szükség.
Műveletek
- Checkout
- Röviden co Készít egy munkamásolatot a repositorybòl. Ez aktuális verzió, de lehet egy régebbi meghatározott verzió.
- Commit
- Másnéven check-in, ci Egy változat (a helyi munkamásolaton történt változások) elhelyezese a repositoryba.
- Atomic Commit
- Elemi commit - azaz ha több változtatás hajtanak végre és a folyamat megszakad, akkor nem kerül a "féligkész" (hibás) állapotba a repository.
- Update
- Az update vagy sync frissíti a munkamásolatot. Bedolgozza, összefésüli a repositoryban történt újdonságokat a helyi munkamásoltba.
- Merge
- Összefésülés. Két változat összefésülése
- Export
- Müvelet a nagyon hasonlít checkouthoz, ekkor csak fájlokat veszi ki a repositoryból, de nem készíti fel a fájlokat a verziókövetésre.
- Resolve
- A frissítések közben jelentkező konfliktusok feloldása.
