Plusieurs personnes travaillant sur les serveurs, il est pratique de savoir qui modifie quoi et pourquoi. De plus garder un historique des configs est très utile. Ces tâches seront gérées par CVS. Le site web du Crans est également géré pas CVS. Plus de détails sur /CvsWeb. [[TableOfContents]] = Point de vue utilisateur = {i} Depuis la mise à jour de '''sudo''' de janvier 2006, les variables d'environnement ne passent plus, on peut passer le CVSROOT et le EDITOR dans les arguments de cvs : '''cvs -d /var/lib/cvs -e jed''' (on peut mettre la commande '''alias cvs="sudo cvs -d /var/lib/cvs -e jed"''' dans les fichiers de conf du shell pour ne pas taper ces arguments à chaque fois). * Rajouter un sous-répertoire dans l'archive (seulement le répertoire, pas son contenu) : '''cvs add ''' * Ajouter un fichier dans l'archive (le fichier doit se trouver dans un répertoire déja ajouté à l'archive) : '''cvs add ''' puis "commiter" le fichier. * "Commiter" un fichier, c'est à dire enregistrer ses modifications : '''cvs commit ''' * Supprimer un fichier de l'archive : supprimer le fichier, puis '''cvs remove ''', et enfin "commiter". = Mise en place = Nous expliquons ici comment synchroniser ses fichiers de configuration avec cvs. == Base == Il faut tout d'abord un repository (lieu de stockage des fichiers) sur la machine (exemple dans /var/cvsroot) {{{ mkdir /var/cvsroot cvs -d /var/cvsroot init }}} Pour simplifier il est ensuite conseillé d'utiliser la variable d'environnement {{{CVSROOT=/var/cvsroot}}}. || /!\ '''Vocabulaire''' ||<#FFFFA0> On parle souvent du "CVS" pour dire le "repository". La distinction est bien faite dans cette section, mais le lecteur doit apprendre à distinguer quand on parle de la ''commande'' {{{cvs}}} ou du ''repository'' CVS. || Quand un répertoire est dans le repository, il possède un sous-répertoire {{{CVS}}} qui contient les informations privées de cvs, notamment : * l'emplacement du repository, * le chemin du répertoire '''dans''' le repository, * les fichiers du répertoire qui sont dans le repository, * les versions des fichiers. Si on veut rajouter {{{/etc}}} dans le repository (en conservant {{{/etc}}} comme répertoire de travail), par exemple, il faut y mettre un sous-répertoire CVS. On peut le créer artificiellement de la manière suivante : {{{ mkdir /tmp/etc cd /tmp/etc cvs import nectaris_etc 'Crans' 'Nectaris' # 'Crans' et 'Nectaris' peuvent être n'importe quoi cd / rm -rf /tmp/etc cvs checkout nectaris_etc # Un répertoire CVS sera alors créé dans /nectaris_etc mv nectaris_etc/CVS etc rm -rf nectaris_etc }}} || {i} '''Explications''' ||<#FFFFA0> On crée un répertoire vide (ici, {{{nectaris_etc}}}) dans le repository, puis on en récupère le sous-répertoire {{{CVS}}} que l'on place dans {{{/etc}}}.[[BR]] Il faut bien distinguer l'arborescence "normale" et l'arborescence du repository : un répertoire du repository peut se trouver à plusieurs endroits dans l'arborescence normale (ce sont des ''copies de travail''). Ici, on leurre cvs en lui faisant croire que le répertoire "normal" {{{/etc}}} est une copie de travail du répertoire {{{nectaris_etc}}} du repository. || C'est prêt, il n'y a plus qu'à ajouter et commiter les fichiers ou répertoires de son choix dans {{{/etc}}}. == Ajouter des documents à CVS == {{{ cvs add le_nouveau_truc_à_gérer_par_cvs }}} On n'oublie pas ensuite de faire un premier commit comme indiqué ci-après. == Avertissement pour les commits : cvs-syncmail == A chaque commit un mail sera envoyé à (aux) adresses de son choix. Il faut récupérer le script syncmail (http://sourceforge.net/projects/cvs-syncmail/), il est disponible en paquet Debian. Il est nécessaire d'avoir python sur la machine. Une version patchée (attachment:syncmail_linux attachment:syncmail_openBSD) est utilisée sur nos serveurs de manière à indiquer le véritable auteur des commits dans le from du mail au lieu de root. Il faut maintenant configurer CVS : {{{ cd /tmp cvs checkout CVSROOT}}} Il faut alors modifier le fichier '''/tmp/CVSROOT/loginfo''' et ajouter la ligne (lancer syncmail sans arguments pour voir les différentes options disponibles). {{{ALL /usr/scripts/syncmail -f -m -qu "%s %V %v" }}} Éditer si nécessaire le fichier '''/tmp/CVSROOT/config''' de manière à ce qu'il contienne : {{{ UseNewInfoFmtStrings=yes }}} Cette opération permet d'éviter des deprecation warnings. Enfin, il faut commiter ces 2 fichiers modifiés : {{{ sudo cvs commit /tmp/CVSROOT/loginfo sudo cvs commit /tmp/CVSROOT/config }}} == Vérification si les fichiers sont synchros == Il suffi de lancer le script attachment:mailWarn_dirtyEtc.sh ou attachment:mailWarn_dirtyEtc.py (ce dernier permet de choisir son serveur de mail). Il est astucieux de le croner tous les jours. = Liens utiles = * Le [http://ximbiot.com/cvs/wiki/index.php wiki] de CVS (en anglais) * [http://www.tuteurs.ens.fr/logiciels/cvs/ Le contrôle de versions avec CVS] (en français) ---- * CatégoriePagePublique