The RCS MINI-HOWTO Robert Kiesling v1.4, 14 agosto 1997 Questo documento riguarda l'installazione di base e l'uso di RCS, lo GNU Revision Control System (sistema di controllo delle revisioni di GNU), sotto Linux. Viene trattata anche l'installazione delle utilità diff(1) e diff3(1), che sono necessarie per il funzionamento di RCS. This document may be reproduced freely, in whole or in part, provided that any usage of this document conforms to the general copyright notice of the HOWTO series of the Linux Documentation Project (Questo documento può essere riprodotto liberamente, in tutto o in parte, a patto che qualsiasi uso di questo documento sia conforme alla nota di copyright generale delle serie HOWTO del Linux Documentation Project). Vedere il file COPYRIGHT per i dattagli. Mandate reclami, suggeri­ menti, errata e qualunque altra cosa a kiesling@terracom.net, affinché io possa mantenere questo documento il più completo e aggiornato pos­ sibile. Traduzione di Fabrizio Stefani (fabrizio_stefani@yahoo.it), 22 luglio 1999. ______________________________________________________________________ Indice Generale 1. Panoramica di RCS. 2. Requisiti di sistema. 3. Compilare RCS dal Sorgente. 4. Creare e mantenere archivi. 5. ci(1) e co(1). 6. Storia delle revisioni. 7. Includere i dati RCS nei file di lavoro. 8. Il Controllo della Versione con RCS e emacs(1). ______________________________________________________________________ 11.. PPaannoorraammiiccaa ddii RRCCSS.. RCS, il Sistema di Controllo delle Revisioni (revision control system), è una raccolta di programmi per tenere traccia dei cambiamenti nei file di testo e controllare gli accessi ai file condivisi in situazioni di lavoro di gruppo. Generalmente viene usato per mantenere i moduli di codice sorgente. Si presta anche a tenere traccia delle revisioni dei file di documentazione. RCS è stato scritto da Walter F. Tichy e Paul Eggert. L'ultima versione di cui è stato fatto il porting per Linux è RCS Versione 5.7. È disponibile anche una versione semi-ufficiale, che usa i thread. Gran parte delle informazioni contenute in questo HOWTO sono state prese dalle pagine di manuale di RCS. RCS include il programma rcs(1), che controlla gli attributi dei file archivio di RCS, ci(1) e co(1), che effettuano il check in ed il check out dei file dagli archivi RCS, ident(1), che effettua ricerche di identificatori chiave negli archivi RCS, rcsclean(1), un programma per cancellare i file su cui non si sta lavorando o che non sono cambiati, rcsdiff(1), che esegue diff(1) per confrontare le revisioni, rcsmerge(1), che fonde due rami (branch) RCS in un singolo file di lavoro, e rlog(1), che stampa i messaggi di log di RCS. I file archiviati con RCS possono essere testo in qualunque formato, o binari se il programma diff, usato per generare i file con i cambiamenti, gestisce dati ad 8 bit. I file possono opzionalmente includere stringhe di identificazione, per aiutare nel tracciamento con ident(1). RCS usa le utilità diff(1) e diff3(3) per generare i file con le modifiche tra più revisioni. Un archivio RCS è formato dalla revisione iniziale di un file, che è la versione 1.1, e una serie di file con le modifiche, uno per ogni revisione. Ogni volta che un file in un archivio viene estratto con co(1), editato e rimesso di nuovo nell'archivio con ci(1), il numero di versione viene incrementato, per esempio ad 1.2, 1.3, 1.4, e così via per le revisioni successive. Gli archivi stessi di solito risiedono in una sottodirectory ./RCS, sebbene RCS abbia anche altre opzioni per immagazzinare gli archivi. Per una presentazione di RCS vedere la pagina di manuale rcsintro(1). 22.. RReeqquuiissiittii ddii ssiisstteemmaa.. RCS ha bisogno di diff(1) e diff3(3) per generare i file con le differenze di contenuto fra le revisioni (i file diff). La suite di utilità diff deve essere installata nel vostro sistema e, quando installate RCS, il software ne controllerà la presenza. I binari precompilati delle diffutils sono disponibili presso: ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gz e sui suoi siti mirror. Se avete bisogno di compilare diff(1) (ed altri), dal sorgente, lo trovate presso: ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gz e sui suoi siti mirror. Dovrete anche avere le librerie ELF installate sul vostro sistema, se volete installare i binari precompilati. Vedere l'ELF-HOWTO per ulteriori dettagli. 33.. CCoommppiillaarree RRCCSS ddaall SSoorrggeennttee.. Prendete la distribuzione sorgente di RCS Versione 5.7. È disponibile presso ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gz e sui suoi mirror. Dopo che avete spacchettato l'archivio nel vostro albero dei sorgenti, dovrete configurare RCS per il vostro sistema. Ciò viene fatto attraverso lo script configure nella directory sor­ gente, che dovete eseguire per primo. Così facendo verranno generati un Makefile e l'appropriato conf.sh per il vostro sistema. Potete poi battere make install che compilerà i binari. Ad un certo punto potreste dover eseguire un su a root affinché i binari possano essere installati nelle giuste directory. 44.. CCrreeaarree ee mmaanntteenneerree aarrcchhiivvii.. Il programma rcs(1) effettua il lavoro di creazione degli archivi e di modifica dei loro attributi. Un riassunto delle opzioni di rcs(1) può essere trovato nella pagina di manuale di rcs(1). Il modo più facile per creare un archivio è di effettuare innanzi tutto un mkdir RCS, nella directory corrente, e poi inizializzare l'archivio con il comando rcs -i nome_file_di_lavoro Ciò crea un archivio di nome ./RCS/nome_file_di_lavoro,v e richiede un messaggio di testo per la descrizione dell'archivio, ma non mette nes­ suna revisione nell'archivio. Potete abilitare o disabilitare il bloccaggio rigoroso (strict locking) dell'archivio con i comandi rcs -L nome_file_di_lavoro e rcs -U nome_file_di_lavoro rispettivamente. Ci sono altre opzioni, trattate nella pagina di man­ uale di rcs(1), per controllare l'accesso all'archivio, impostarne il formato e impostare i numeri di revisione. 55.. ccii((11)) ee ccoo((11)) .. ci(1) e co(1) sono i comandi usati per effettuare il check in (controllo in inserimento) ed il check out (controllo in estrazione) dei file dai loro archivi RCS. Il comando ci(1) può anche essere usato per effettuare sia il check in che il check out da un archivio. Nella loro forma più semplice, ci(1) e co(1) prendono solo il nome del file di lavoro. ci nome_file_di_lavoro e co nome_file_di_lavoro Il comando nella forma ci -l nome_file_di_lavoro effettua il check in del file abilitandone il blocco (lock enabled) mentre co -l nome_file_di_lavoro _è _e_f_f_e_t_t_u_a_t_o _a_u_t_o_m_a_t_i_c_a_m_e_n_t_e. Cioè, ci -l effettua di nuovo il check out del file, con il blocco abilitato. ci -u nome_file_di_lavoro effettua il check in del file nell'archivio ed effettua di nuovo il check out con il blocco disabilitato. In tutti i casi, all'utente viene chiesto un messaggio di log. ci(1) creerà anche un archivio RCS se non ne esiste già uno. Se non specificate una revisione, ci(1) incrementa il numero di versione dell'ultima revisione bloccata nell'archivio ed aggiunge allo stesso il file di lavoro appena rivisto. Se specificate una revisione su un ramo già esistente, essa deve essere più alta dei numeri di revisione esistenti. ci(1) creerà anche un nuovo ramo se specificate la revisione di un ramo che non esiste. Per i dettagli, vedere le pagine di manuale di ci(1) e co(1). ci(1) e co(1) riconoscono varie opzioni per usi interattivi e non. Di nuovo, vedere le pagine di manuale di ci(1) e co(1) per i dettagli. 66.. SSttoorriiaa ddeellllee rreevviissiioonnii.. Il programma rlog(1) fornisce informazioni sul file archivio e i log di ogni revisione in esso immagazzinata. Un comando come rlog nome_file_di_lavoro stamperà la storia delle revisioni del file, per ogni revisione stam­ perà la data di creazione e lo userids dell'autore, e la persona che ha bloccato il file. Potete specificare gli attributi dell'archivio ed i parametri di revisione da vedere. 77.. IInncclluuddeerree ii ddaattii RRCCSS nneeii ffiillee ddii llaavvoorroo.. co(1) mantiene una lista di parole chiave del database RCS che vengono espanse quando viene effettuato il check out nel file di lavoro. La parola chiave $Id$ in un documento sarà espansa in una stringa che contiene il nome del file, il numero di revisione, la data del chek out, l'autore, lo stato della revisione e chi è che lo ha bloccato, se c'è. Includendo la parola chiave $Log$ essa verrà espansa nel log della storia delle revisioni del documento. Questa ed altre parole chiave possono essere usate come criteri di ricerca negli archivi RCS. Vedere la pagina di manuale di ident(1) per ulteriori dettagli. 88.. IIll CCoonnttrroolllloo ddeellllaa VVeerrssiioonnee ccoonn RRCCSS ee eemmaaccss((11)) .. La capacità di controllo della versione di emacs(1) funziona come front end per RCS. Questa informazione è specifica per la versione 19.34 dello GNU emacs, che è incluso con le principali distribuzioni di Linux. Quando si edita un file con un emacs(1) che è registrato con RCS, il comando vc-toggle-read-only (legato a C-x C-q per default) controllerà la versione di un file in emacs, e poi in RCS. Emacs aprirà un buffer in cui potrete scrivere un messaggio di log, premere C-c C-c per terminare l'input, e procedere con il processo di check in. Se avete selezionato il bloccaggio rigoroso per il file con RCS, dovete ribloccare il file per poterlo editare con emacs(1). Potete fare il chek out del file, per farne il controllo della versione con emacs, con il comando % nel modo buffer-menu. Per maggiori informazioni, vedere il Manuale dello GNU Emacs e le pagine info di Emacs.