[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debutant] introduction à RCS
Voici un petit guide (très court) pour RCS.
RCS (Revision Control System) est une suite de tools qui permettent une gestion
de versions simple et efficace.
Une gestion de versions, ça sert à quoi ?
Et bien, si vous travaillez sur des fichiers (p.ex. du code source, de la documentation,
un site web, ...) et que vous voulez pouvoir récupérer une ancienne version ou bien
que vous êtes plusieurs à travailler sur un projet et que vous voulez éviter que 2
personnes modifient le même fichier en même temps, c'est RCS qu'il vous faut ;)
En fait, c'est très simple à utiliser...
Un exemple: je veux créer mon site.
cd ~
mkdir www
cd www
vi index.html
#...
# bon, là, j'ai une 1ère version, et j'aimerais bien mettre ce fichier sous contrôle
# de version :
mkdir RCS
# RCS sauve ses fichiers (permettant de reconstituer des versions précédentes et
# de collecter des informations à propos de chaque fichier, etc...) dans le sous-
# répertoire 'RCS' par rapport au répertoire courant.
ci index.html
# "ci", c'est "Check In"
# Lorsque l'on a terminé de travailler un fichier, ou que l'on veut sauver son état
# actuel dans le contrôle de versions, on fait un check in.
# ensuite, RCS vous demande de taper une description du fichier (parce que c'est un
# "initial check-in", càd. que le fichier n'existait pas encore dans RCS)
# Entrez un message, p.ex. "homepage", tapez RETURN puis . suivi de RETURN
# Vous pouvez aussi de suite passer ce message depuis la ligne de commande grace au
# flag -m, p.ex.:
# ci -m 'ceci est la homepage' index.html
# Le fichier index.html a disparu! C'est normal...
# Si vous voulez retravailler le fichier, il faut faire un checkout (voir plus loin).
# Mais, si vous voulez conserver une copie du fichier, il faut faire soit:
# - de suite un check-in "sans lock": ci -u index.html (-u pour "unlock")
# - dans ce cas-ci c'est trop tard, donc il faut faire un check-out:
# check-out *sans lock*: co -u index.html
co -u index.html
# et le fichier est revenu - notez qu'il est read-only
# c'est voulu: si vous voulez le _modifier_, il faut faire un check-out *avec lock*
# Ce lock empêche quelqu'un d'autre de faire un check-out avec lock alors que le
# fichier est locké :)
# Evidemment (bande de warlordz ;)), vous vous dites que vous pouvez très bien faire
# chmod u+w index.html
# vi index.html
# Mais alors, quand vous voulez faire un check-in, RCS dire "que nenni, le fichier
# n'est pas locké!" (notez que vous avez dans ce cas la possibilité de locker le
# fichier sans faire de check-out: un
# rcs -l index.html
# suivi de
# ci -u index.html
# , ça marche, à moins que quelqu'un d'autre n'ait fait un check-out avec lock
# avant vous ;)) - dans ce cas, c'est "perdu" ;))
# Disons que vous voulez retravailler le fichier.
# Un check-out avec lock est alors nécessaire:
co -l index.html
# le fichier read-only a été écrasé par une version read-write
# Modifions...
vi index.html
#...
# Voilà. Faut refaire un check-in maintenant (faisons-le de suite avec -u pour que
# RCS nous laisse une version read-only)
ci -u -m 'ajouté une couleur de fond' index.html
# Cette fois-ci, le message (-m '...') est censé reprendre ce que vous avez modifié
# par rapport à la dernière version, afin d'avoir un "log" reprenant toutes les
# modifications.
# Si une modif' ne marche pas (là je pense principalement à du code source ;)) et
# que vous voulez revenir à une version antérieure (qui marche), ces messages sont
# très importants afin de s'y retrouver.
# De plus, si vous travaillez en équipe, ça permet aux autres de voir ce que vous
# avez modifié depuis la dernière fois.
---
Ben voilà, on a déjà fait le tour du problème :)
Evidemment, vous pouvez très bien avoir d'autres fichiers dans le même répertoire:
vi liens.html
ci -m 'liste de liens vers des chouettes sites Linux' -u liens.html
Si vous avez des sous-répertoires, faut créer un répertoire "RCS" à chaque fois dans
ceux-ci.
Sinon, il y a plein d'autres possibilités...
La commande "rlog" vous permet de voir l'état actuel du fichier ainsi que le log
qui contient tous les messages de chaque sous-version:
rlog RCS/* | less
On peut aussi voir quels fichiers sont lockés et par qui.
Il est également possible de "casser" (break) un lock (parfois nécessaire dans le
travail en équipe, p.ex. quand qqn est parti en vacances et a oublié de faire un
check-in de tous les fichiers qu'il avait lockés):
rcs -u index.html
# pas "co" ou "ci", mais "rcs -u fichier":c'est une commande "administrative"
# parce qu'elle n'implique pas de mouvement(s) de fichier(s) (checkin/checkout)
# De manière analogue, on peut très bien locker un fichier sans faire un check-out
# de celui-ci: "rcs -l fichier"
On peut aussi faire un check-out d'une ancienne version:
p.ex. ici, je veux avoir une copie read-only de la version 1.2:
co -u -r1.2 index.html
De même, on peut indiquer un numéro de version explicitement lorsque l'on fait
un check-in:
ci -u -r2.0 liens.html
Voilà. Si vous avez des questions, envoyez un mail sur la liste, je tacherai d'y
répondre.
A part ça, il y a des tonnes de documentation sur le sujet dans:
info rcs
info ci
info co
et
man rcs
man ci
man co
@+
PS: RCS (ci, co, rcs, rlog, ...) sont des tools sous license GPL - il existe même
des versions Windoze, OS/2 et VMS (!) ;)) - vous les trouverez sur www.cyclic.com
Sous Linux, c'est inclus dans toutes les distributions...
-o) Pascal Bleser | UNIX *is* user friendly.
/\\ C++/UNIX Development | It's just selective about
_\_v ATOS Payment Systems | who its friends are...
pbleser@atos-group.com---------------------------------
o---------------------------------------------------o
| -o) |
| /\\ Don't fear the penguin - http://linuxbe.org |
| _\_v The Newbie's site http://newbie.linuxbe.org |
o---------------------------------------------------o