Une version et quart avant Jésus Christ

Publié le 21 octobre 2007 par Peck

La nouvelle version sur http://linux-attitude.fr/post/Faites-une-pause
Niveau :


Résumé : co -l ; ci -u ; rlog ; rscdiff

Avant subversion existait cvs, avant cvs existait rcs. CVS est en fait un RCS en réseau avec un dépot centralisé.

Étudions donc cet outil, qui bien que préhistorique a encore un peu d'utilité dans notre monde. En effet, il est très simple d'utilisation, local et ne nécessite aucune configuration préalable.

Prenons un exemple simple. Vous avez un fichier de configuation, et il vous arrive de le modifier. Logiquement vous voulez garder les traces de ce que vous faites. Appelons ce fichier /etc/mysql/my.cnf

$ cd /etc/mysql
# a partir de maintenant on garde les traces
$ ci -i my.cnf
# mais on ne veut pas qu'il disparaisse
$ co my.cnf
# le fichier est maintenant en lecture seule


Vous aurez remarqué que toutes les modifications (ainsi que l'initialisation) nécessitent un commentaire. Pensez à le terminer par un point sur une seule ligne ou par un ctrl-d.

Maintenant faisons une modification :

# on récupere la bonne version, et on autorise l'écriture
$ co -l my.cnf
# on fait nos petites affaires
$ vi my.cnf
# et on valide (en mettant le fichier en lecture seule)
$ ci -u my.cnf


Et voilà, c'est fini pour l'utilisation de base. Vous voyez que c'est plutôt simple et faisable n'importe où.
L'historique des versions est stocké dans un fichier my.cnf,v si vous ne voulez pas voir ces fichiers, il suffit de créer un répertoire RCS avant de faire le ci -i et ceux-ci seront automatiquement mis dedans.

Maintenant vous avez un problème, vous voulez voir ce qui s'est passé. La procédure est assez simple :

# Qui a fait quoi ? (merci les commentaires)
$ rlog my.cnf
# Qu'est-ce qui est en train d'être fait ? (avant un ci)
$ rcsdiff my.cnf
# Qu'est-ce qui a été fait entre 2 versions données ? (si le 2e -r n'est pas donné, c'est la version courante qui est utilisée)
$ rcsdiff -r1.1 -r1.2 my.cnf

# revenir à une ancienne version temporairement
$ co -r1.1 my.cnf
# revenir à une ancienne version définitivement
$ co -l my.cnf
$ co -p1.1 my.cnf > my.cnf
$ ci -u my.cnf

RCS contient d'autres fonctions, mais notez tout de même que si les fonctions présentes ne vous suffisent pas il est fort probable que vous deviez vous tourner vers un vrai gestionnaire de versions moderne comme subversion.


Notez aussi qu'avec RCS tout est local, la copie de travail est donc directement le fichier utile.