# Descrizione del CVS

Il CVS (concurent version system) è uno strumento a linea di comando che consente di mantenere lo stato individuale (versioni differenti) dei files in una rete locale LAN (Local Area Network) o geografica WAN (Wide Area Network). Tipicamente, il CVS è installato su un server, gli altri compiuter sono dei client CVS. Gli utenti possono, in modo indipendente, estrarre i files nel loro sistema locale, modificarli, ed infine aggiornarne le modifiche sul server. Più utenti possono lavorare contemporaneamente sugli stessi files perché il CVS riconosce le eventuali modifiche sovrapposte e ne notifica agli utenti i conflitti da esse derivanti. Questa verifica è effettuata al momento dell'archiviazione (commit), a meno che l'utente non abbia aggiornato nel frattempo la propria la copia locale (update), operazione effettuabile in qualunque momento. Pertanto, per usare il CVS, non è richiesta la connessione continua alla rete.

Inoltre il CVS consente di mantenere diversi alberi di versioni di un progetto, unire i cambiamenti (merge) tra due versioni in una terza versione, come pure fornire una lista dettagliata delle attività del progetto. In definitiva si può dire che il CVS è uno strumento per gestire progetti attraverso l'uso di internet ed è utilizzato in molti progetti Open Source.

# Descrizione di LinCVS

LinCVS è una Interfaccia Grafica per il client CVS a linea di comando, su piattaforme Unix, Mac OS X e Windows. Consente di scaricare Moduli da un server (checkout), creare Moduli sul server (import), come pure verificare o aggiornare lo stato delle cartelle o dei singoli files. Le operazioni di base come aggiungere (add), eliminare (remove) ed archiviare (commit) sono consentite come cose di ordinaria amministrazione, come pure mostrare le reali differenze tra la versione di un file sul server e quella della copia locale (sandbox), visualizzazione grafica ad albero delle versioni, e supporto grafico molteplice alla gestione del progetto. Tutte le operazioni sono registrate sul server CVS (configurabile tramite la cronostoria (history)), e sono pertanto comprensibili.

Per mantenere LinCVS independente dalla versione del CVS, LinCVS usa una copia locale ma installata separatamente del CVS e pertanto potrebbe lavorare sempre con l'ultima versione di quest'ultimo.

LinCVS parte ricercando i Progetti CVS presenti nelle sottocartelle della cartella radice configurata dall'utente e li visualizza sull'Ambiente di Lavoro (workbench). A questo punto tutte le operazioni eseguibili su uno/più files o su intere cartelle sono accessibili tramite i menu o semplicemente cliccando con il tasto destro del mouse. Lo stato delle singole cartelle è continuamente aggiornato da LinCVS. Ciò significa che l'icona della cartella indica all'utente se, per esempio, una sottocartella contiene files con modifiche non ancora archiviate, prima ancora di averla aperta. Lo stato di un progetto è infatti visualizzato non appena LinCVS ha eseguito il comando 'CVS status'. L'aggiornamento 'al volo' delle cartelle fa' sì che LinCVS sia adatto alla gestione di grossi progetti con migliaia di files. LinCVS consente tutte le modalità di connessione previste dal CVS, comprese quelle che garantiscono la sicurezza degli accessi. La gestione del Proxy è inoltre consentita utilizzando una versione modificata (patched) del CVS, scaricabile dalla pagina di dowload del nostro sito.

Siccome LinCVS non modifica i dati interni usati dal CVS per la gestione dei progetti, è possibile un uso concorrente di LinCSV con il CVS a linea di comando. La funzione di visualizzazione dello stato delle cartelle di LinCVS non viene in tal caso compromessa.

Sebbene LinCVS supporti graficamente quasi l'intera gamma delle funzioni CVS è facile configurarne l'interfaccia grafica per le proprie esigenze individuali. I menu a comparsa sono liberamente configurabili, mentre i normali menu forniscono sempre accesso a tutti i comandi disponibili. Una barra degli strumenti aggiuntiva consente poi di accedere direttamente ai comandi di uso più frequentemente.

A differenza di altri programmi LinCVS è veramente facile da usare ;-) .

## Elenco delle Caratteristiche

Supporto Grafico di LinCVS:
Metodi di connessione:

- locale/nfs
- pserver
- ssh
- ssh-agent
- proxy

Caratteristiche speciali di visualizzazione cartelle:

- Tiene traccia dello Stato della Cartella
- Abilitazione/Disabilitazione Albero/Cartelle
- Continuo monitoraggio stato della cartella
- Scansione Cartella 'al volo'
- Apertura in 'Gestione Risorse'
- Apertura nel terminale (shell)
- Mostra Sottocartelle
- Nascondi Sottocartelle

Caratteristiche Principali:

- Profili utente/server
- Gestione simultanea di più progetti
- Supporto a file di testo/binari
- Proprietà del progetto
- Configurazione per progetto
- Aggiornamento/ripristino alla diramazione della cartella
- Possibilità di rinominare file/s
- Aspetto ridefinibile dall'utente
- Icone/Cartella delle Icone definibile dall'utente
- Definizione delle cartelle d'installazione delle Applicazioni
- Anteprima importazione files binari/di testo
- Navigazione dei moduli sul server, anche senza il file dei moduli
- Visualizzazione dei files senza estrazione (checkout), dalla Cronostoria o dall'Albero delle Revisioni
- Cronostoria delle diramazioni/Etichette/Nome Progetto/Commento di Archiviazione
- Visualizzazione a Schede per files CVS/Ignorati/Non CVS
- Rimozione files Locali/dall'Archivio (repository)/Entrambi
- Apri con (opzione di partenza per aprire una specifica cartella )
- Creazione nuovo file/cartella
- Visualizzatore interno delle Differenze
- Finestra di dialogo interna per la risoluzione dei conflitti
- Uso di programmi esterni per : Modificare File/Visualizzare File/Esplorare Cartelle/Terminale locale/Differenze/Terminale remoto
- Modalità di Auto Aggiornamento dello stato configurabile per progetto (stato/stato aggiornamento/aggiornamento)
- Funzioni di tracciamento per il debug
- Guida in linea

Funzioni (comandi) del CVS:

- Estrazione (checkout branch/tag/date)
- Importazione (import)
- Esportazione (export branch/tag/date)
- Pulizia/Eliminazione (release/remove)
- Stato (status)
- Stato aggiornamento (query update)
- Lista Utenti Modificatori (editors)
- Lista Utenti Visionatori (watchers)
- Inserzione/Disinserzione in Lista Visionatori (watch add/remove)
- Rendi Modificabile (edit)
- Rendi Non Modificabile (unedit)
- Cronostoria (history)
- Archiviazione (commit)
- Etichettatura (tag add/remove/move/reset)
- Creazione Diramazioni (branch)
- Aggiornamento (update) a qualunque revisione
- Connessione/Disconnessione (login/logout)
- Blocco/Sblocco di Cartelle/File (lock/unlock)
- Registrazione Operazioni Effettuate (log) (Albero delle Revisioni di un file, ridimensionabile graficamente)
- Differenze (diff) con la copia in Archivio (repository)
- Visualizzazione di un file (dall'Albero delle Revisioni o dalla Cronostoria (history))
- Differenze e unione (diff and merge) dall'Albero delle Revisioni (log tree)
- Unione differenze tra due revisioni in una terza revisione dall'Albero delle Revisioni (log tree)
- Annotazione (annotate) (con funzioni di filtraggio multiplo)
- Modelli per commenti usati dall'Archiviazione (commit)
- Gestione dei files ignorati globale/locale/per ambiente/per cartelle (.cvsignore global/local/environment/per directory)
- Aggiunta Files di testo/binari
- Riaggiunta (resurrezione) di files (readd)

Di caratteristiche ce ne sono sicuramente molte altre (tutte quelle dimenticate ;-), e si consideri che LinCVS è ancora in fase di sviluppo ...