Commandes de base de CVS

Limites, règles du jeu

Commandes de base

cvs up -d met à jour la copie locale avec les dernières versions qui sont disponibles en global. Ramènes les fichiers manquants (soit effacés en local, soit ajoutés en global par quelqu'un d'autre).

La commande cvs up, en plus de mettre à jour la copie locale, indique si des modifications ont été faites en local qui n'ont pas encore été poussées vers le dépôt global. Ainsi par exemple:

bayartb@cachy:~/dev/FDN/FDN-Adsl$ cvs -q up
? config/check.cfg.bin
M templates/docs/index.html
U templates/docs/releve.html
A templates/docs/use-cvs.html

Le ? indique que le fichier existe en local, mais n'existe pas en global (il a été créé localement). Si c'est un fichier inutile (temporaire, de travail, etc) ce n'est pas grave, s'il est important, il faut l'ajouter.

Le M indique le fichier est modifié localement, il faut probablement pousser la nouvelle version vers le dépôt global.

Le U indique que le fichier existait en global mais pas encore en local, il vient d'être ramené.

Le A indique que le fichier existe en local, a été ajouté au dépôt global, mais qu'aucune version n'a encore été envoyée (on vient de faire un cvs add), lors du prochain cvs commit le fichier modifié et le fichier nouveau seront envoyés.

Si un fichier est modifié en local (je l'ai modifié) et modifié également en global (quelqu'un d'autre l'a modifié), on a la principale difficulté. Si c'est un fichier en texte pur, CVS va chercher à isoler les deux modifications, et si c'est possible à les réunir. Si les deux modifications portent sur le même passage (on a tous les deux ré-écrit la première phrase, mais pas de la même façon), alors CVS ne peut pas décider de quelle version est la bonne. On appelle ça un conflit. Si c'est un fichier binaire (un PDF, une image, un fichier OpenOffice, une feuille Excel, etc), alors on a toujours un conflit, parce que CVS ne sait pas comment ça se lit, donc il sait qu'il y a deux modifications, et ne peut pas décider de ce qu'il doit faire.

cvs add 'fichier' ou cvs add 'repertoire' indique que le fichier ou le répertoire (en local) devront être envoyés au dépôt global et sont nouveaux. Un répertoire est envoyé tout de suite (et ne peut pas être supprimé). Un fichier sera envoyé quand on enverra l'ensemble des modifications locales.

cvs remove 'fichier' indique que le fichier est supprimé du dépôt global. Il n'est pas vraiment supprimé (on garde toujours les anciennes versions).

cvs commit indique que les versions modifiées localement sont les nouvelles versions des fichiers, elles sont copiées dans le dépôt global et seront disponibles comme des nouvelles versions pour tous les autres utilisateurs la prochaine fois qu'il feront un cvs up.