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.
Személyes eszközök