Subversion kontra CVS
Egy gyors lista arról, hogy miben jobb a Subversion, mint a CVS:
- A commit műveleteket atomiként kezeli, azaz vagy minden fájl felmegy, vagy egy sem.
- Globális revision szám.
- Működik az átnevezés, ekkor nem vesznek el a fájl előzményei. Ehhez külön parancsot kell használni.
- A fájlok mellett a könyvtárakat is verziózza, egyszerű a részfa mozgatása is.
- Vannak metadata információk, property-k, pl. könyvtárnál az ignored.
- A branch/tag fogalma nála egységes, gyakorlatilag mindet egy copy-ként kezeli.
- Van binary diff, ezért a bináris állományok tárolása hatékonyabb.
- Szerver lehet Apache httpd annak minden előnyével. Pl. az állományok elérhetők böngészővel http-n keresztül, vagy titkosítva https-en.
- Gyorsabbak bizonyos műveletek, ugyanis a hálózati sávszélességet a fejlesztői drágábbnak ítélték, mint a helyet, ezért van lokális másolat a fájlokból, ezért egy diff vagy egy revert hálózati kommunikáció nélkül végrehajtható.
- A hálózaton is csak a változtatásokat küldi át.
- Nem lehet conflict-olt fájlt visszacommit-olni, ehhez conflict resolution kell előtte.
- A Subversion-ben lehetőség van arra, hogy egy könyvtárra megmondjuk, hogy ennek tartalma nem az adott helyen van tárolva, hanem megadhatunk egy URL-t. Erre akkor lehet szükség, mikor egy working copy több checkout-ból áll össze. Ezt ún. “external definition”-nel adható meg. Ekkor egy checkout műveletet kiadva az eredeti könyvtár, valamint a külső definíciók is frissítésre kerülnek. Property-vel kell ezt is megadni.
- A CVS status parancs túl bőbeszédű, helyette inkább az update parancsot szoktuk használni. A Subversion-ben a status és update is megfelelően használható.
- Az opciókat lehet az alparancs elé vagy mögé is írni, nem lesz ettől más a jelentése.
- A diff alapértelmezetten unified diff.
- Az Subversion-ben van lock modify unlock, azaz amikor valaki elkezd szerkeszteni egy állományt, lock-olnia kell, addig a többi felhasználó nem tudja változtatni, mert neki read-only az állomány. Amikor befejezi, lehet unlock-ot hívni.
Ezekről a Version Control with Subversion könyv B melléklete is ír.
Van a cvs2svn, Python script, mely a repository konverziót elvégzi.
Lehetőség van pre-commit hook létrehozására, ekkor Win esetén egy pre-commit.bat-ot kell létrehozni, amit meg fog hívni. Kap paramétert (felhasználó, tranzakcióazonosító), és a tranzakcióhoz az egyéb adatokat, pl. a comment szöveget az svnlook paranccsal kell lekérdezni.