CVS può gestire più di un progetto, esso organizza i progetti in moduli identificati dal nome della directory in cui sono messi i file relativi, ad esempio:
[piccardi@pcpamela ~]$ ls /usr/local/cvsroot/ CVSROOT adidsp geometry muonacq pamelain questo caso si hanno i moduli adidsp geometry muonacq pamela; un utente potrà recuperare tutti i file relativi al modulo pamela che andaranno nella directory pamela; è anche possibile gestire una gerarchia di moduli, inseriti in un albero di directory.
CVS ha una directory base dove tiene gli archivi (che nel è appunto /usr/local/cvsroot) e i vari file amministrativi; ogni progetto deve fare riferimento ad essa; in un progetto attivo essa viene memorizzata nei file amministrativi locali del progetto (ad esempio per un utente che ha il progetto muonacq nella sua home directory sarà in /muonacq/CVS) e non è necessario specificarla; in generale essa viene tenuta dalla variabile di shell CVSROOT (inizializzata allo startup), o specificata direttamente dall'utente con l'apposito switch -d (ex. cvs -d /usr/local/cvsroot comando opzioni).
Normalmente l'archivio si tiene su una macchina remota e vi si accede via rete. Per repositori esterni esistono varie modalità di accesso, la via piu' semplice è quella dell'uso di ssh come rimpiazzo di rsh per l'accesso esterno; in tal caso la directory del repositorio si può accedere con la sintassi:
cvs -d :ext:utente@server:/usr/local/cvsroot comandoquesto però comporta che sulla macchina remota server sia installato il server ssh ed esista l'utente utente con privilegi di accesso ai files; inoltre sulla macchina ospite deve esser stata definita la variabile di shell CVS_RSH=ssh.
In questo modo ssh si collega alla macchina remota ed esegue il comando CVS con una connessione criptata dopo aver richiesto la password di utente.