3391
Commentaire: Pour François
|
6075
ils portent à confusion ici
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
## page was renamed from CransNounous/ConcurrentVersionsSystem | |
Ligne 5: | Ligne 6: |
Le site web du Crans est également géré pas CVS. Plus de détails sur /CvsWeb. | [[TableOfContents]] |
Ligne 7: | Ligne 8: |
== Point de vue utilisateur == | = 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). Cependant, la variable {{{CVSROOT}}} ou le paramètre {{{-d}}} n'ont pas besoin d'être précisés si on travaille dans des répertoires gérés par cvs (présence d'un sous-répertoire CVS). |
Ligne 11: | Ligne 14: |
* "Commiter" un fichier, c'est à dire enregister ses modifications '''cvs commit <fichier>''' * Supprimer un fichier de l'archive : supprimer le fichier puis '''cvs remove <fichier>''' et enfin "commiter". |
* "Commiter" un fichier, c'est à dire enregistrer ses modifications : '''cvs commit <fichier>''' * Supprimer un fichier de l'archive : supprimer le fichier, puis '''cvs remove <fichier>''', et enfin "commiter". |
Ligne 14: | Ligne 17: |
== Mise en place == === Base === Il faut tout d'abord un repository (lieu de stoquage des fichiers) sur la machine (exemple dans /var/cvsroot) {{{mkdir /var/cvsroot cvs -d /var/cvsroot init}}} |
= Mise en place = |
Ligne 20: | Ligne 19: |
Pour simplifier il est ensuite conseillé d'utiliser la variable d'environnement CVSROOT=/var/cvsroot | Nous expliquons ici comment synchroniser ses fichiers de configuration avec cvs. |
Ligne 22: | Ligne 21: |
Pour sauvegarder les fichiers interessants d'un répertoire (et sous répertoires) (/etc par exemple) : {{{mkdir /tmp/etc |
== 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}}}. ||<tablewidth="100%" :> /!\ '''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 |
Ligne 25: | Ligne 43: |
cvs import nectaris_etc 'Crans' 'Nectaris' # Il est possible de mettre ce que l'on veut à la place de Crans et Nectaris | cvs import nectaris_etc 'Crans' 'Nectaris' # 'Crans' et 'Nectaris' peuvent être n'importe quoi |
Ligne 33: | Ligne 51: |
C'est prêt, il n'y a plus qu'à ajouter et commiter les fichiers ou répertoires de son choix dans /etc | ||<tablewidth="100%" :> {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. || |
Ligne 35: | Ligne 53: |
=== Ajouter des documents à CVS === | C'est prêt, il n'y a plus qu'à ajouter et commiter les fichiers ou répertoires de son choix dans {{{/etc}}}. |
Ligne 37: | Ligne 55: |
{{{cvs add le_nouveau_truc_à_gerer_par_cvs | == Ajouter des documents à CVS == {{{ cvs add le_nouveau_truc_à_gérer_par_cvs |
Ligne 40: | Ligne 61: |
On n'oublie pas ensuire de faire un premier commit comme indiqué ci-aprés. | On n'oublie pas ensuite de faire un premier commit comme indiqué ci-après. |
Ligne 42: | Ligne 63: |
=== Avertissement pour les commits : cvs-syncmail === | Pour ajouter un fichier contenu dans un sous-répertoire, il faut préalablement ajouter le sous répertoire à CVS. {{{ cvs add le_repertoire_contenant_le_fichier cvs add le_fichier_contenu_dans_le_repertoire }}} == Avertissement pour les commits : cvs-syncmail == |
Ligne 46: | Ligne 74: |
Il faut récupérer le script syncmail (http://sourceforge.net/projects/cvs-syncmail/), il est diponible en paquet debian. Il est necssaire d'avoir python sur la machine. | 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. |
Ligne 48: | Ligne 76: |
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 commit dans le from du mail au lieu de root. | 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. /!\ Ce qui suit n'est pas nécessaire lorsque l'on configure CVS sur un nouveau serveur, étant donné que les scripts et le CVSROOT sont stockés sur le NFS. |
Ligne 53: | Ligne 83: |
Il faut alors modifier le fichier '''/tmp/CVSROOT/loginfo''' et ajouter la ligne (lancer syncmail sans arguments pour voir les différentes options disponibles) | Il faut alors modifier le fichier '''/tmp/CVSROOT/loginfo''' et ajouter la ligne (lancer syncmail sans arguments pour voir les différentes options disponibles). |
Ligne 55: | Ligne 85: |
{{{ALL /usr/scripts/syncmail -f <machin.crans.org> -m <serveur de mail> -qu "%s %V %v" <addresse@mail.org> }}} | {{{ALL /usr/scripts/syncmail -m <serveur de mail> -qu "%s %V %v" addresse@mail.org }}} |
Ligne 57: | Ligne 87: |
Editer si necessaire le fichier '''/tmp/CVSROOT/config''' de manière à ce qu'il contienne | Si on veut forcer le nom d'hôte, on peut rajouter l'option {{{-f machin.crans.org }}}. |
Ligne 59: | Ligne 89: |
{{{UseNewInfoFmtStrings=yes}}} | Éditer si nécessaire le fichier '''/tmp/CVSROOT/config''' de manière à ce qu'il contienne : |
Ligne 61: | Ligne 91: |
Cette opération permet d'éviter des déprecation warnings. | {{{ UseNewInfoFmtStrings=yes }}} Cette opération permet d'éviter des deprecation warnings. |
Ligne 64: | Ligne 98: |
{{{sudo cvs commit /tmp/CVSROOT/loginfo sudo cvs commit /tmp/CVSROOT/config }}} |
{{{ sudo cvs commit /tmp/CVSROOT/loginfo sudo cvs commit /tmp/CVSROOT/config }}} |
Ligne 67: | Ligne 103: |
== Vérification si les fichiers sont synchros == | |
Ligne 68: | Ligne 105: |
=== 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), contenu dans {{{/etc/common_etc}}}. |
Ligne 70: | Ligne 107: |
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. La solution la plus simple consiste à creer un lien symbolique dans {{{/etc/cron.daily}}}. = Liens utiles = |
Ligne 72: | Ligne 111: |
Il est astucieux de le croner tous les jours. == Lien utile == |
* 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) |
Ligne 76: | Ligne 114: |
http://www.lifl.fr/~boulet/formation/syst-dist/exposes2003-2004/cvs/index.html (en français) | ---- * CatégoriePagePublique |
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.
Point de vue utilisateur
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). Cependant, la variable CVSROOT ou le paramètre -d n'ont pas besoin d'être précisés si on travaille dans des répertoires gérés par cvs (présence d'un sous-répertoire CVS).
Rajouter un sous-répertoire dans l'archive (seulement le répertoire, pas son contenu) : cvs add <rep>
Ajouter un fichier dans l'archive (le fichier doit se trouver dans un répertoire déja ajouté à l'archive) : cvs add <fichier> puis "commiter" le fichier.
"Commiter" un fichier, c'est à dire enregistrer ses modifications : cvs commit <fichier>
Supprimer un fichier de l'archive : supprimer le fichier, puis cvs remove <fichier>, 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 |
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
Explications |
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.
Pour ajouter un fichier contenu dans un sous-répertoire, il faut préalablement ajouter le sous répertoire à CVS.
cvs add le_repertoire_contenant_le_fichier cvs add le_fichier_contenu_dans_le_repertoire
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.
Ce qui suit n'est pas nécessaire lorsque l'on configure CVS sur un nouveau serveur, étant donné que les scripts et le CVSROOT sont stockés sur le NFS.
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 -m <serveur de mail> -qu "%s %V %v" addresse@mail.org
Si on veut forcer le nom d'hôte, on peut rajouter l'option -f machin.crans.org .
É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), contenu dans /etc/common_etc.
Il est astucieux de le croner tous les jours. La solution la plus simple consiste à creer un lien symbolique dans /etc/cron.daily.
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)