[successivo] [precedente] [inizio] [fine] [indice generale] [parte]


Capitolo 7.   Gestione dei fle con RCS

Il sistema di gestione è distribuito su più programmi di servizio. Ognuno di essi svolge una funzione precisa.

rcs

Crea un nuovo file RCS o modifica le caratteristiche di uno esistente.

rcsclean

Rimuove i file che non sono mai stati utilizzati.

rcsdiff

Confronta due versioni distinte di un file RCS.

rcsmerge

Crea un unico file di lavoro che contiene le differenze tra due revisioni differenti di un file RCS.

rlog

Stampa informazioni di servizio di un file RCS.

ci

Memorizza nuove revisioni in un file RCS.

co

Preleva le revisioni da un file RCS e le memorizza nel corrispondente file di lavoro.

ident

Ricerca tutte le istanze inserite da RCS in un file.

merge

Crea un un unico file di lavoro che contiene tutti i cambiamenti tra due revisioni.

7.1   Gestione di una revisione

Prima di iniziare qualsiasi operazione è importante creare un contenitore o deposito dove RCS tiene traccia dei cambiamenti. Il deposito è una directory.

$ mkdir RCS [Invio]

Supponiamo che il file da gestire sia miofile.c. Il primo passo da compiere è di depositare la prima versione del file.

$ rcs -i miofile.c [Invio]

Crea un nuovo file RCS ma non deposita nessuna revisione.

$ ci -i miofile.c [Invio]

RCS/miofile.c,v  <--  miofile.c
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> Questo è un file di esempio
>>.
initial revision: 1.1
done

A questo punto il programma chiede informazioni per gestire correttamente il sistema di revisioni. Per prima cosa bisogna fornire un commento sulla natura del file: per semplicità digitiamo "Questo è un file di esempio" terminato con un punto alla riga successiva.

Il programma Ci deposita il file di lavoro nella directory RCS. Terminata l'operazione elimina il file dalla directory corrente. Per evitare la cancellazione del file di lavoro è indispensabile aggiungere l'opzione -l che ha la funzione anche di proteggerlo.

$ ci -i -d -l miofile.c [Invio]

Annota, nella revisione anche, la data (opzione -d) dell'ultima modifca subita dal file.

Per ripristinarlo è necessario fare l'operazione inversa: prelevare l'ultima revisione dal deposito e utilizzare un nuovo file di lavoro. Questa procedura viene svolta dal programma Co.

$ co -l miofile.c [Invio]

RCS/miofile.c,v  -->  miofile.c
revision 1.1 (locked)
done

È sufficiente modifcare il file di origine e ripetere la procedura; RCS incrementa in modo automatico il numero di revisione. L'opzione -l protegge il file in modo che altri utenti non possano modificarlo.

Per rimuovere la protezione utilizzare l'opzione -u; utilizzarla nel caso in cui le modifiche al file non siano gradite.

$ co -u miofile.c [Invio]

7.2   Le macro nei progetti

All'interno di un file progetto RCS è possibile inserire delle macro che hanno la funzione di conservare informazioni. Queste ultime vengono espanse ed inserite nel file sorgente con le operazioni di deposito successive. Per prevenire spiacevoli incovenienti è preferibile porle nelle sezioni commentate.

/* Autore: $Author: umbertoz $ */
...
int main ()
{
...
}

Macro Descrizione
$Header$ Espande le informazioni riguardanti il percorso completo del file, il numero di revisione, la data, l'autore, lo stato della protezione, e il propietario del file in quel momento. La data viene indicata rispetto allo UTC se non viene diversamente usata l'opzione -z.
$Id$ Si comporta come la precedente macro; tuttavia il percorso del file RCS non viene visualizzato.
$Author$ Espande le informazioni relative al nome utente di chi controlla la revisione.
$Date$ Espande le informazioni relative all'ora e alla data. Se non viene specificata una zona con l'opzione -z viene riportata in UTC.
$Locker$ Espande le informazioni relative al nome utente di chi ha protetto la revisione.
$Log$ Espande le informazioni relativa ai messaggi registrati durante le operazioni di deposito del file. Nel file sorgente compaiono tutte le modifiche complete nelle revisioni. Ogni linea generata viene preceduta dai caratteri precedenti; quindi è utile per sfruttare i simboli per i commenti nei linguaggi di programmazione.
$Name$ Espande il nome simbolico utilizzato per il recupero della reivisione se ne esiste uno.
$RCSfile$ Espande il nome del file RCS senza indicarne il percorso.
$Revision$ Espande il numero della revisione.
$Source$ Espande lo stato della revisione; quest'ultimo viene assegnato con l'opzione -s di ci e rcs.

7.3   Ci

ci [opzioni] file

Il programma di servizio Ci deposita il file di lavoro nella directory RCS.

$ ci -r2 nomefile [Invio]

Deposita una nuova revisione (in questo caso si inizia una nuova diramazione) del file.

$ ci -d -l nomefile [Invio]

Deposita una nuova revisione utilizzando la data, recupera il file di lavoro e lo protegge.

$ ci -M -d -l nomefile [Invio]

Come il precedente, tuttavia la data del file è uguale a quella della revisione recuperata; questa richiesta può confondere programmi come Make.

Alcune opzioni

Opzione Descrizione
-rrev Deposita la revisione specificata.
-r Individua l'ultima revisione nel deposito. Rilascia la protezione sul file e cancella il file di lavoro. Viene adoperato per eliminare i comportamenti dati da -l e -u.
-l[rev] Deposita il file e subito dopo lo recupera e lo protegge. Questa operazione consente di continuare a lavorare con il file.
-u[rev] Deposita il file e subito dopo lo recupera senza proteggerlo. Questa operazione lascia il file di lavoro in sola lettura.
-f[rev] Forza una operazione di deposito anche se la nuova revisione non è differente dalla precedente.
-k[rev] Ricerca nel file di lavoro le parole chiave legate ai campi: autore, data di creazione, numero di revisione e stato. Questi valori verranno assegnati alla revisione del file depositato. Viene generato un messaggio di informazione contente l'autore della revisione e la data corrente. Questa caratteristica può essere sfruttata per distribuire il software.
-q[rev] Non produce l'uscita diagnostica sulle operazioni effettuate.
-i[rev] Effettua il deposito iniziale. Restituisce un messaggio di errore se il file è già presente.
-j[rev] Deposita senza inizializzare. Restituisce un errore se il file non esiste.
-I[rev] Esegui il programma in modalità interattiva.
-d[date] Utilizza la data date per effettuare il deposito del file. Se non viene specificata viene utilizzata la data dell'ultima modifica del file.
-M[rev] Lascia la data del nuovo file di lavoro uguale a quella del file depositato.
-mmsg Visualizza la stringa msg come messaggio di benvenuto in tutte le revisioni depositate.
-nname Associa un nome simbolico al numero di revisione durante l'operazione di deposito. Viene visualizzato un errore se il nome è già stato assegnato in precedenza.
-Nname Forza l'associazione ad un nome simbolico al numero di revisione durante l'operazione di deposito.
-sstate Imposta lo stato della revisione. Lo stato di default è Exp.
-tfile Scrive un testo descrittivo nel file RCS come contenuto nel file file. Il contenuto esistente viene cancellato. Il file non può iniziare con il carattere "-".
-t-string Scrive un testo descrittivo nel file RCS come contenuto nella stringa string. Il contenuto esistente viene cancellato. L'operazione di deposito avviene normalmente con la richiesta di digitare un testo da parte dell'utente. Questo comportamento evita questa procedura.
-wlogin Cambia il nome della login nel campo dell'autore nel file depositato. Può risultare utile in abbinamento con l'opzione -k.
-v Stampa le informazioni sulla versione di RCS.
-Vn Adatta il comportamento di RCS alla versione n; in questo modo è possibile scambiare file con versioni precedenti.
-xsuffixes Imposta una lista di suffissi per il file RCS. Un suffisso non nullo individua un qualsiasi percorso finale che termina con il suffisso stesso. La lista dei suffissi viene separata dal caratter '/' e quelli predefiniti sono ',v' ed il suffisso vuoto.
-z Specifica la zona predefinita quando si usa l'opzione -d. Un valore numerico indica lo scarto rispetto allo UTC, altrimenti può rimanere vuoto o LT (Local Time). Il file RCS viene comunque salvato con l'ora rispetto allo UTC.

7.4   Co

co [opzioni] file

Il programma di servizio Co preleva il file di lavoro dal deposito RCS e crea un nuovo file di lavoro.

$ co -l -kv miofile.c [Invio]

Preleva l'ultima revisione del file miofile.c e genera i valori associati alle parole chiave ma, non le parole chiave.

$ co -u miofile.c [Invio]

Toglie la protezione del file se questo è stato protetto.

$ co -u -d"18:55" miofile.c [Invio]

Preleva la revisione con la data minore delle ore 18:55 riferite al giorno corrente. Il file non viene protetto.

$ co -r1.9 -l nomefile [Invio]

Preleva la revisione 1.9; per recuperare l'ultima della dirmazione utilizzare -r1.

Alcune opzioni

Prototipo Descrizione
-r[rev] Recupera il file dal deposito se il numero di revisione è minore o ugale a rev. Se si indica una diramazione recupera l'ultima revisione. Se invece viene omessa l'indicazione sul numero di revisione viene recuperata sempre l'ultima derivazione predefinita. Se al numero di revisione viene sostituito il carattere $ viene recuperata la revisione in base ai valori della parola chiave nel file di lavoro. La presenza del carattere . a fine del ramo fa prelevare sempre l'ultima revisione. La presenza del carattere . al posto del numero di revisione fa sempre riferimento alla diramazione predefinita.
-l[rev] Come il precedente, tuttavia protegge la versione richiesta.
-u[rev] Come il precedente, tuttavia la versione richiesta non viene protetta. Se viene omesso il numero restituisce la revisione protetta dal richiedente, se presente; altrimenti restituisce l'ultima disponibile nella derivazione predefinita.
-f[rev] Forza la scrittura del file di lavoro.
-kkv Genera le stringhe associate alle parola chiave conservando la loro forma predefinita. Se viene richiesta la protezione del file viena aggiunta la stringa relativa alla parola chiave correlata. Questo è il comportamento predefinito.
-kkvl Come il precedente, tuttavia la stringa relativa alla protezione del file viene sempre inserita se la revisione corrente è protetta.
-kk Genera solamente le parole chiave e non le stringhe associate. Questo meccanismo è indispensabile per eliminare la differenza tra le i valori associati alle parole chiave tra due revisioni differenti.
-ko Genera le vecchie parole chiave presenti nel file di lavoro prima che venga depositato. Questo meccanismo è indispensabile se il file non tollera modifiche alle parole chiave.
-kb Genera una immagine binaria delle vecchie parole chiave. È equivalente all'opzione -ko, tuttavia le operazioni di lettura e scrittura sono condotte in modalità binaria.
-kv Genera solo le stringhe associate alle parole chiave. Questo meccanismo è utile per i linguaggi di programmazione dove è più facile lavorare con stringhe non composte.
-prev Stampa le informazioni della revisioni nell'output standard.
-q Non produce l'uscita diagnostica sulle operazioni effettuate.
-Irev Esegui il programma in modalità interattiva.
-ddate Preleva l'ultima revisione dalla diramazione scelta dove la data è minore o uguale a date. La forma di scrittura della data è libera e può essere una di queste forme.
3:00 pm lt
3:00 AM, Jan, 24, 1995
1995-01-24 03:00:00+00
1995-01-24 03:00:00-08
1995/01/24 03:00:00
Tue Jan 25 03:00:00 1995 LT
Tue Jan 25 03:00:00 GMT 1995
Tue, Jan 25 1995 03:00:00 -0800
25-January-1995, 03:00 GMT

LT indica il tempo locale. La zona predefinita viene assunta come UTC, tuttavia si può fare riferimento all'opzione -z per cambiarla. I campi omessi vengono prelevati dalla data corrente. La stringa deve essere quotata se presenta degli spazi.

-M[rev] Modifica il valore della data nel file di lavoro della revisione richiesta. Un uso errato può confondere il programma Make.
-sstate Preleva l'ultima revisione della diramazione scelta dove lo stato sia state.
-T Conserva il valore della data nel file RCS anche se quest'ultimo è stato cambiato a causa di una protezione aggiunta o rimossa. Un uso errato può confondere il programma Make.
-w[login] Recupera l'ultima revisione nella diramazione scelta che è stata depositata dall'utente con login login. Se quest'ultimo viene omesso è utilizzato il login del chiamante.
-jjoinlist Crea una nuova revisione che viene unita con la revisione joinlist. Utilizzare Rcsmerge in quanto questa funzione è obsoleta.
-V Stampa le informazioni sul numero di versione di RCS.
-Vn Adatta il comportamento di RCS alla versione n; in questo modo è possibile scambiare file con versioni precedenti.
-xsuffixes Utilizza i suffissi suffixes per caratterizzare il file RCS.
-zzone Imposta il formato di uscita della data nella sostituzione delle parole chiave, e specifica la zona per l'opzione -d. Il comportamento predifinito è la zona vuota, ossia RCS fa riferimento allo UTC.

7.5   Rcs

rcs [opzioni] file

Rcs consente di creare un nuovo file RCS oppure di cambiare le caratteristiche di uno esistente. Si tratta di un programma di servizio per la manutenzione e l'amministrazione dei depositi. Per il corretto utilizzo di Rcs è fondamentale che l'utilizzatore appartenga alla lista di accesso presente nel file RCS stesso; questo è pur sempre vero, tuttavia vi sono delle eccezzioni se il richiedente è il super utente o proprietario del file e se la lista degli accessi è vuota.

$ rcs -u1.9 nome_file [Invio]

Togli la protezione alla revisione 1.9 se quest'ultima fu in precedenza protetta per qualche motivo. Non è detto che la revisione 1.9 sia l'ultima della diramazione; in questo caso è possibile specificare solo il ramo, ossia con -u1.

Alcune opzioni

Opzione Descrizione
-i Crea ed inizializza un nuovo file RCS ma non deposita nessuna revisione. Se non viene indicato un percorso prima cerca di posizionarlo nella directory RCS quindi in quella attuale.
-alogin[, login, ...] Aggiunge uno o più utenti nella lista degli accessi.
-Avecchio_file Aggiunge la lista degli accessi associata a vecchio_file nel nuovo file.
-e[login[, login, ...]] Elimina uno o più utenti dalla lista degli accessi. Se non ne viene specficato nessuno vengono eliminati tutti.
-b[rev] Imposta la diramazione rev come predefinita. Se viene omessa viene presa quella più alta nell'albero.
-cstring Imposta un commento iniziale al posto del suffisso del file di lavoro; questa opzione è da scartare, ed è preferibile utilizzare la macro $Log$.
-ksubst Cambia la parola chiave predefinita. Quest'ultima viene ristabilita con l'opzione -kkv.
-l[rev] Protegge la revisione con il numero rev. Se viene specificata al posta della revisione una diramazione viene bloccata l'ultima. Se non è presente rev protegge l'ultima revisione della diramazione predefinita. La protezione evita che vengano effettuati dei cambiamenti non graditi.
-u[rev] Toglie la protezione alla revisione con il numero rev. Solo il proprietario può rimuovere una protezione eventualmente non fosse così viene inviata una mail a chi ha originato il blocco. Il comportamento è equivalente all'opzione precedente.
-L Imposta la protezione di tipo strict; ciò significa che il propietario del file RCS non è esentato dal proteggere il file durante il deposito. Viene utilizzato per condividere i file di sorgente.
-U Imposta la protezione di tipo non strict; ciò significa che il proprietario del file non deve proteggere una revisione durante il deposito. Non deve venire utilizzata per i file di sorgente in codivisione.

7.6   Rcsdiff

rcsdiff [opzioni] file

Rcsdiff confronta due revisioni di un file RCS.

Se il nome del file ha un suffisso tipo RCS allora denota un file RCS, altrimenti individua un generico file di lavoro.

$ rcsdiff nome_file [Invio]

Confronta l'ultima revisione della diramazione predefinita con il file di lavoro.

$ rcsdiff -r1.3 nome_file [Invio]

Confronta la revisione 1.3 con il file di lavoro.

$ rcsdiff -r2 nome_file [Invio]

Confronta l'ultima revisione della diramazione 2 con il file di lavoro.

$ rcsdiff -r1.3 -r1.4nome_file [Invio]

Confronta la revisione 1.3 con la revisione 1.4.

Alcune opzioni

Opzione Descrizione
-q Non visualizza informazioni diagnostiche.
-ksubst Pratica la sostituzione delle parole chiavi come spiegato in Co (vedi sez. 7.4.
-rrev1 Specifica un numero di revisione.
-rrev2 Specifica un numero di revisione.
-T Vedi opzioni in sez. 7.4.
-V[n] Vedi opzioni in sez. 7.4.
-xsuffisso Vedi opzioni in sez. 7.4.
-zzona Vedi opzioni in sez. 7.4.
opzioni diff Acetta le opzioni del programma Diff, nell'ordine inserito.

Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gestione_dei_fle_con_rcs.html

[successivo] [precedente] [inizio] [fine] [indice generale]