Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Controllo di versione: RCS

        Scritto: Giansante Gabriele, 2001      Aggiornato: 14/02/2017     

Cos'e' RCS?

RCS e' un programma per il controllo della versione dei file. Controllare la versione dei file significa avere un meccanismo che permetta di recuperare diverse versioni di uno stesso file. Ogni volta che salviamo un file, o che comunque ne facciamo modifiche sognificative, in pratica creiamo una versione diversa di quel file. Se scopriamo di aver cambiato il file in modo sbagliato, molto spesso e' difficile tornare perfettamente indietro, ad una versione stabile o comunque migliore.

RCS consente di mantenere uno storico, cosi' che non solo e' possibile recuperare l'ultima versione di un file, ma una qualsiasi dalla sua creazione fino all'ultima modifica.

Un'altra caratteristica molto importante di RCS e' che mette a disposizione dei meccanismi primitivi di lock per evitare i conflitti di versione sui file. In altre parole, se lo si desidera, e' possibile bloccare un file finche non lo si e' finito di scrivere/modificare.

Vedremo come usare in modo semplice RCS, senza scendere in particolari che possono essere ricavati facilmente dal manuale (vedere i riferimenti in fondo alla pagina).
I comandi che verranno utilizzati sono:
  • rcs, per creare la versione iniziale e tutte le informazioni necessarie
  • ci, per il check in (salvataggio della versione)
  • co, per il check out (richiesta della modifica e della creazione di una nuova verisione)


Come funziona

Per conservare lo storico delle modifiche, RCS crea un file dove mantiene tutte le informazioni necessarie.

Le modalita' di utilizzo di RCS prevedono il seguente ciclo:
  • Creazione versione iniziale del file. Comprende anche la creazione delle informazioni usate internamente da RCS. Questo passo viene eseguito solo la prima volta.
  • Richiesta di modifica del file.
  • Modifica del file.
  • Salvataggio nuova versione del file.
Sicuramente non e' molto comodo procedere con questi passaggi ogni volta che si vuole modificare un file, pero' i vantaggi sono notevoli, specialmente per progetti in cui lavorano piu' utenti contemporaneamente.

Pubblicita'
Creazione versione iniziale. Per creare la versione iniziale, si puo' usare il comando "rcs -i nome_del_file". Supponendo di trovarci nella directory contenente il file su cui effettuare il controllo di versione, le informazioni da salvare vengono memorizzate per default nella directory attuale. Se, invece, esiste la directory RCS, allora e' in ./RCS che vengono inserite tutte le informazioni. Se la directory RCS non esiste e' bene crearla prima di eseguire il comando indicato in precedenza, in modo da tener separati i file dalle informazioni di versione.
Quello che avviene e' la creazione in ./RCS (assumiamo di usare questa directory) di un file con nome "nome_del_file,v".
Adesso, se vogliamo, possiamo effettuare le prime modifiche "controllate".
Una volta salvate le modifiche, con "ci -u nome_del_file" (vedere la parte relativa al salvataggio della versione per sapere cosa accade con "ci -u"), salviamo la versione, ovvero la 1.1 (default). Come versione iniziale non verra' chiesto l'inserimento di commenti, inseriti gia' con "rcs -i".
Cosa cambia al nostro file: il file adesso ha solo permessi in lettura, nessuno, neanche il proprietario, ha piu' il permesso di scrittura. Cio' consente di obbligare, in qualche modo, chi vuole effettuare modifiche, ad usare RCS e quindi a registrare le versioni. Per permettere a piu' utenti la modifica, e' necessario un ulteriore passaggio. Esiste una "access list" per ogni file inserito nel controllo di versione. Dentro questa lista vengono memorizzati tutti gli utenti che hanno il permesso di modificare il file (non necesariamente sono tutti gli utenti validi del sistema operativo!!!). Alcuni dei comandi che consentono di gestire l'"access list" sono:
  • rcs -aelenco nome_del_file, dove "elenco" e del tipo login1,login2,login3,ecc.. Serve ad aggiungere utenti alla "access list". Es. "rcs -apippo,pluto,nero test.c".
  • rcs -e nome_del_file, elimina l'intera lista degli accessi. Se lo si esegue, chiunque puo' usare RCS per modificare il file. Es. "rcs -e test.c".
  • rcs -eelenco nome_del_file, dove "elenco" e del tipo login1,login2,login3,ecc.. Serve ad eliminare gli utenti indicati dalla "access list". Es. "rcs -epippo,pluto,nero test.c".

Richiesta di modifica del file. Come gia' anticipato, per modificare un file posto sotto controllo di versione, e' necessario "richiederlo". Per richiedere il file si puo' usare il comando "co -l nome_del_file". Cio' che avviene e' la modifica dei permessi del file e dell'owner: il nuovo owner e' chi richiede di modificarlo, la scrittura (opzione -l) viene permessa solo al'owner (si suppone che nessun altro utente possa entrare con il login del richiedente). Leggere le note alla fine per conoscere problemi che si potrebbero presentare.
Si e' pronti adesso a modificare il file per creare una nuova versione.

Salvataggio nuova versione del file. Una volta modificato il file, si deve salvare la nuova versione. Si puo' compiere l'operazione con il comando "ci -u nome_del_file". In realta' si potrebbe omettere l'opzione "-u", ma cio' comporterebbe la scomparsa (apparente) del file. Al successivo "co", il file verrebbe estratto dalle informazioni memorizzare in "./RCS". L'opzione "-u" permette di salvare le modifiche senza eliminare il file. Dopo il "check in", il file non ha piu' alcun permesso di scrittura, nel senso che non potra' essere modificato piu' da nessuno (ls -l, per verificare) fino al successivo "check out".
Bisogna fare quindi attenzione ai permessi associati ad ogni utente, infatti se un utente non ah permessi adeguati, potrebbe avere problemi ad effettuare il successivo "check out" (vedere note).

Vediamo un esempio pratico di utilizzo.
#creazione del file di prova
touch prova.c
#creazione directory RCS (se non esiste gia')
mkdir RCS
#creazione informazioni controllo di versione
rcs -i prova.c
#Eventuale modifica del file
vi prova.c
#Salvataggio prima versione
ci -u prova.c
#Faccio quello che mi pare...
...
#Voglio modificare il file, ne richiedo l'accesso
co -l prova.c
#Modifico il file
vi prova.c
#Salvo la nuova versione
ci -u prova.c


Note
  • Per poter consentire la modifica del file a piu' utenti, appartenenti allo stesso gruppo, e' bene avere un umask tipo lo "002" (digitare "umask" dalla shell per controllare). Solitamente non e' necessario dare il permesso di scrittura ad altri che non appartengano al proprio gruppo di sviluppo.
  • Per ulteriori informazioni, "man rcs", "man ci", "man co".


Riferimenti




Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'