CVS

A HupWiki-ből...

Concurrent Versions System - Verziókövető rendszer

Olyan esetben használják, ha egy alkalmazást többen fejlesztenek egyszerre, és nem lenne előnyös, ha a különféle változatok összekeverednének. Roppant elterjedt és egyszerű a használata. A fejlesztés során a fejlesztés tetszőleges régebbi állapota visszakereshető.

Főleg BSD-s körökben népszerű a CVSup, ami leginkább az rsynchez hasonlítható, tehát tükrözésre használatos, viszont az rsync-kel ellentétben cvs-hez optimalizálták.

Biztonságos távoli CVS elérés

A CVS az alatta fekvő filerendszer és userspace azonosító/hozzáférést ellenőrző módszereit használja. Elsőre nem tervezték hálózatos működésre, csak később került bele (ext direktíva). Több hálózatos csatlakozási módja is van, ebből a pserver nem túl biztonságos, a különböző rsh-s megoldások idejétmúltak, GSSAPIval meg nem triviális belőni (kell 1 implementacio, pl. Kerberos). Mi marad? SSH. Az rsh transport helyére betéve már egy jó, biztonságosnak mondható megoldást kapunk. Nosza, rajta :

  • Tegyük fel a CVS-t, SSH-t a szerverre

Debian alatt

apt-get install cvsutils cvs ssh
  • Hozzunk létre egy felhasználót akinek a nevében turkáljuk majd a cvs-t
adduser foocvs
  • Módosítsuk az SSH konfigját...

... úgy, hogy elfogadja az SSH kulcsokat (ki akar még a passwordozessel is bajlódni, ha fejleszt?)

PubkeyAuthentication yes
  • Generáljuk le a kulcsainkat

Ez mindenkinek, aki hozzásférést akar, meg kell csinálnia (saját néven bejelentkezve).

ssh-keygen -t rsa
ssh-keygen -t dsa

Alapértelmezetten a ~/.ssh/ könyvtárba kerülnek a file-ok, ebből a .pub kiterjesztésűeket juttassuk fel a szerverre (pl. scp).

  • Vegyük fel a kulcsainkat a szerveren

A CVS userünk $HOME/.ssh könyvtárában adjuk ki:

touch authorized_keys

majd vegyünk fel a file-ba sorokat így:

#XYZ hozzaferese a foo projekt CVSehez
command="/usr/bin/cvs server",no-port-forwarding,no-pty,no-X11-forwarding,no-agent-forwarding ssh-rsa ASDG..= user@srv

A # jel megjegyzést jelöl. Minden kulcs bejegyzése 1 sor, formátuma: a bejelentkezéskor végrehajtandó parancs (nem kap shellt), opciók (szóköz nélkül), kulcs. A kulcs (publikus részét) a .pub fájlból kimásolva lehet egyszerűen beilleszteni a sor végére. Ha valaki RSA és DSS kulcsot használ, akkor a neve alatt két bejegyzés kell (a két kulcsnak). A fájlba mindenkinek fel kell venni a kulcsait, akinek hozzáférést akarunk adni a CVS repositoryhoz.

  • CVS repo inicializálása

Jelentkezzünk be a szerverre.

su foocvs
cd
cvs -d/home/foocvs/cvs init

Így a CVS userünk home-jában keletkezik egy CVS repo, ami innentől használható.

  • CVS használat tesztelése

Egy - már kulcsait felvett - felhasználóként adjuk ki:

env CVS_RSH=ssh cvs -d:ext:foocvs@server:/home/foocvs/cvs checkout .

Ha a CVS munkapéldányunk megvan, használhatjuk a rövidebb formát is:

env CVS_RSH=ssh cvs checkout .

Ha a login scriptünkben elintézzük a CVS_RSH változó helyes beállítását és még rövidítünk a parancson, akkor pedig:

cvs co .

A fentiek Arnaud receptje alapján íródtak (ld. linkek), feltételezve hogy 1 projektet kell kiszolgálni, a tagok megbíznak egymásban annyira, hogy minden felvett user írni/olvasni tudja a CVS repo-t. Ne feledkezzünk el a rendszeres mentésről!

FIXME (CHROOT)

Külső hivatkozások

CVS over SSH linkek: