Questo how-to spiega come configurare una macchina Windows per accedere tramite un canale sicuro SSH ad una repository CVS ospitata da un server Linux. Spiega inoltre come configurare una repository CVS personale o condivisa e come fare in modo che i commit siano notificati via mail.
Il server linux dovrà avere l'applicativo cvs installato (per maggiori informazioni consultare il tutorial di DevGuy), ma non è necessario che sia configurato come server, difatti sarà utilizzato come client remoto. Dovrà inoltre essere installato e configurato il server SSH.
Nel client windows andranno installati i seguenti software:
Non strettamente necessari ma consigliati:
Il client sarà configurato in modo che ogni comando cvs sia eseguito da TortoiseCVS in una shell remota SSH: la comunicazione avviene tramite il tool plink, la chiave privata è gestita dal tool pageant.
pageant e aggiunta al suo catalogo la chiave privata generata (verrà richiesta la passphrase con cui è stata cifrata la chiave privata); da questo momento in poi tutte le applicazioni compatibili (Putty, PLink, FileZila) potranno avviare delle sessioni SSH con il server; è possibile specificare il nome della chiave come parametro di riga di comando tramite un link o uno script, ad esempio:c:\programmi\putty\pageant.exe c:\document and settings\user\.ssh\id.ppk
ext (external tool); ecco come apparirà la CVSROOT nell'ipotesi di un utente user, di un server host e di un repository path /var/cvsroot::ext:user@host:/var/cvsroot
TortoiseCVS include una versione di PLink (TortoisePlink), ma si consiglia di utilizzare la versione più recente disponibile nella suite di Putty; è possibile modificare il tool esterno utilizzato nella sezione Strumenti delle preferenze di TortoiseCVS
A questo punto TortoiseCVS dovrebbe essere in grado di eseguire comandi sul server tramite un canale SSH; una verifica potrà essere effettuata non appena configurata la repository sul server.
Alcune delle operazioni descritte in seguito potrebbero essere eseguite remotamente sul server da riga di comando, ma verrà privilegiato l'utilizzo di TortoiseCVS, perché più in linea con lo scopo di questo tutorial (leggi: più comodo) e perché così si potrà verificare la corretta configurazione del client.
putty, utilizzando la chiave appena generata; continuiamo nell'ipotesi che l'utente identificato dalla chiave privata abbia login user; una volta effettuato il login (se pageant è già stato avviato non sarà necessario specificare la chiave privata da utilizzare) si avrà a disposizione una console remota per configurare la repository:
user@host:~$ cvs -d /home/user/cvsroot init
user@host:~$ chmod 700 cvsroot
cvsusers, impostato come gruppo principale per ogni utente che voglia scrivere nella repository, altrimenti nessun altro sarà in grado di modificare i file creati da lui:user@host: su
Password:
host:/home/user# cvs -d /var/cvsroot init
host:/home/user# chmod 775 cvsroot
host:/home/user# usermod -g cvsusers user
host:/home/user# exit
user@host: touch yo
user@host: ls -l yo
-rw-r--r-- 1 user cvsusers 0 Aug 23 19:10 yo
le ultime due istruzioni mostrano come da questo momento tutti i nuovi file creati dall'utente appartengano al gruppo cvsusers; sarebbe possibile utilizzare una ACL (Access Control List) per specificare un controllo su file e directory più fine, ma la soluzione proposta fornisce un buon grado di sicurezza e “impone” l'utilizzo di utenti specifici per il CVS, il che è considerata una buona prassi
cvswrappers ovvero un file che spieghi come trattare i file inseriti nella repository in base al loro nome (in genere in base all'estensione): a grandi linee tramite questo file si specifica se considerare un file binario o testuale, abilitando in questo caso il merging dei conflitti e l'editing concorrente:
c:\document and settings\user>md desktop\sandbox
CVSROOT specificando gli altri parametri richiesti come descritto sopracvswrappers e configurarlo secondo le proprie necessità, qui è disponibile un esempiocvs-commit.py, loginfo e commitinfo nel modulo c:\document and settings\user\desktop\sandbox\CVSROOT loginfo inserendo i destinatari delle mail di notifica:DEFAULT $CVSROOT/CVSROOT/CVSCommitNotification.py cvs@host,user@host %{sv}CVSCommitConfiguration.py specificando il dominio da appendere al nome dell'utente che effettua il commit per ottenere l'indirizzo del mittenteuser@host: chmod 755 /var/cvsroot/CVSROOT/*.py
CVSROOT dalla sandboxA questo punto dovrebbe essere possibile utilizzare normalmente TortoiseCVS ed ottenere una mail di notifica all'indirizzo specificato per ogni commit.