CVS sur redhat - Flash informatique
Transcription
CVS sur redhat - Flash informatique
CVS sur redhat Xavier.Barmaz@epfl.ch, EPFL - SV-IT Partager des informations est la base même d’une communauté d’utilisateurs. Lors de développement en particulier, il est de rigueur de pouvoir travailler à plusieurs sur le même module. Or, lorsque le nombre de personnes excède le seuil critique de deux, il devient vite difficile de gérer le projet car chacun peut facilement, par exemple, remplacer une version récente par une plus ancienne. De plus, le chef de projet se trouve plus occupé à gérer la synchronisation des travaux de chacun plutôt que de s’investir dans ces occupations de gestion. A cela s’ajoutent aussi les problèmes de répartition géographique. Dès lors, il devient indispensable de faire usage d’un outil spécialisé appelé CVS. CVS signifie Concurrent Versions System. Il s’agit d’un logiciel fonctionnant sur le principe client-serveur et permettant de gérer efficacement des fichiers ou plus exactement toutes les versions du même fichier modifié au fil du temps. On peut alors, en toute simplicité, retrouver d’anciennes versions de fichiers, consulter l’historique des modifications, bref, garder une trace de tout le vécu du projet. CVS est un système habituellement utilisé pour maintenir et gérer des fichiers sources. Mais il peut également convenir pour tout autre élément ayant les mêmes besoins de gestion (fichiers HTML, documentation, répertoire téléphonique, etc.). Il peut être utilisé de manière locale ou via un réseau. Ce dernier point est très important car il permet de s’acquitter du problème géographique cité plus haut. Prérequis Le serveur CVS fut initialement créé pour tourner sur des systèmes de type Unix/Linux. Il existe aussi des versions pour Windows et Macintosh. Toutefois, nous allons nous en tenir à des explications pour un serveur CVS sur une version Advanced Server de Red Hat ainsi qu’à l’utilisation côté client. Lors d’une installation de base de la distribution Red Hat AS, le serveur CVS est déjà installé. Reste donc à le configurer. Voyons donc, dans un premier temps, la configuration matérielle requise ainsi que les concepts de base de CVS. Finalement, nous illustrerons la configuration du serveur Red Hat par le biais d’un exemple pratique. Remarque: Les informations sur les commandes clientes (checkout, commit, ...) utilisées se trouvent dans la section Commandes de l’article. Configuration matérielle CVS est peu gourmand en terme de puissance de calcul du serveur, n’importe quelle machine courante peut faire l’affaire. Veillons toutefois à respecter les spécificités matérielles requises par le système d’exploitation. Au niveau disque, il est prudent de disposer pour le repository d’environ 3 fois le volume de la totalité des fichiers qui y seront stockés. Cette taille peut s’avérer à terme trop limitée si les modifications sont nombreuses, mais il s’agit d’un bon départ. Concernant la mémoire, trois facteurs entrent en jeu: ❚ t: taille du plus gros fichier géré par CVS ❚ v: volume total du plus gros checkout (recupère une copie locale d'un module du repository) ❚ n: nombre maximum de checkout simultanés Le besoin maximal de mémoire peut alors être estimé par la formule: 10 * t + n * max(2 Mo, v) Cette mémoire peut être constituée en majorité de mémoire virtuelle, CVS n’ayant besoin que de peu de mémoire physique pour fonctionner, la valeur fournie pour la formule précédente doit donc servir à dimensionner le swap de la machine. Une machine Unix équipée de 32 Mo de mémoire centrale peut gérer un gros repository avec un nombre conséquent d’utilisateurs. Prenons maintenant quelques minutes pour acquérir le vocabulaire et les concepts liés à CVS. Repository Qu’est-ce? Le repository, ou dépôt en français, correspond au répertoire distribué dans lequel sont stockés tous les fichiers et répertoires sous le contrôle de CVS. Il contient entre autres tous les modules, tous les historiques de fichiers ainsi que tous les fichiers d’administration qui ont été développés avec le logiciel CVS. Le repository peut être considéré comme un système de fichiers distribués à part entière: il fournit aux clients qui en ont l’accès les modules de développement et les sources dont ils auront besoin pour travailler. Habituellement, le repository n’est jamais directement accessible de la part des clients qui vont plutôt utiliser leur client CVS pour récupérer en local les modules du repository dont ils ont besoin. Ils récupèrent ainsi une copie d’un module puis travaillent sur cette copie, avant de mettre à jour le repository. Ce dernier contiendra alors les nouveaux changements qui ont été effectués par les clients. Selon la façon dont on souhaite utiliser CVS, le repository peut être installé directement chez le client, qui y aura ainsi accès en local, ou bien quelque part dans le monde, auquel cas le repository distant peut être contacté par une méthode d’accès spécifique. Localisation Afin de pouvoir accéder au repository, qu’il soit local ou distant, un client a besoin de spécifier plusieurs choses: fi 7 – 14 septembre 2004 – page 3 CVS sur redhat ❚ la méthode d’authentification utilisée (local par défaut). Nous utiliserons ssh pour plus de sécurité; ❚ le nom d’utilisateur du client (pas d’authentification par défaut); ❚ l’adresse de la machine distante contenant le repository (localhost par défaut); ❚ le répertoire (local ou distant) où se trouve le repository. Ces informations sont stockées dans une variable d’environnement cliente appelée CVSROOT. Cette variable doit respecter la syntaxe suivante: methode_authentification:username@adresse:repertoire Dans la définition du module, on peut également spécifier uniquement la liste des fichiers du répertoire choisi qui seront récupérés lors du checkout. mon_module module1/src Makefile Les modules de type alias Un module de type alias -a représente un autre nom pour un répertoire du repository. nom_module -a repertoire Les modules de type ampersand Ainsi, parmi les valeurs possibles de la variable CVSROOT, celles-ci sont correctes: Ce type de module permet de définir un nouveau module qui référencera plusieurs répertoires du repository. export CVSROOT = /cvs export CVSROOT =:ext:[email protected]:/cvs nom_module [options] &module1... On peut également spécifier à la commande CVS que l’on souhaite utiliser une variable temporaire lors de l’appel de la commande. La variable CVSROOT n’est plus utilisée et il faut spécifier à chaque fois le répertoire du repository par l’option -d. Cela se fait par la syntaxe suivante: Exclure un répertoire d’un module cvs -d /cvs checkout module cvs -d:ext:[email protected]:/cvs commit !repertoire Lorsque l’on récupère une copie d’un module en local, la variable CVSROOT utilisée pour réaliser le «checkout» est sauvegardée au sein du fichier Root contenu dans les répertoires CVS/ ajoutés par la commande dans chacun des répertoires du module. Administration serveur Le répertoire CVSROOT (à ne pas confondre avec la variable d’environnement cliente vue ci-dessus) du repository contient plusieurs fichiers qui sont réservés pour effectuer l’administration du serveur CVS. On peut ainsi définir les modules qui seront offerts par le repository, spécifier des attributs et options sur les fichiers du repository ou encore ajouter diverses actions à réaliser lors de commandes spécifiques par le client. Passons en revue le fichier modules ainsi que les fichiers des droits d’accès, de gestion des comptes et le fichier .cvsignore. Il en existe bien évidemment d’autres. Modules Lors du checkout sur un module, le répertoire désigné ainsi que tous ses sous-répertoires sont récupérés. Or, il est possible d’interdire des répertoires dans la définition d’un module. Ainsi, pour définir un alias sur le répertoire module1 du repository tout en excluant le répertoire src/cpp, il faut procéder comme suit: mon_module -a !module1/src/cpp module1 Les options d’un module On peut définir des options lors de la définition d’un module. On peut notamment spécifier l’exécution de commandes ou de programmes lorsqu’une commande CVS est exécutée: -e progname: définit un programme qui sera exécuté lorsque le module sera exporté. -i progname: définit un programme qui sera exécuté lorsque des fichiers du module seront mis à jour (commit). -o progname: définit un programme qui sera exécuté lorsque le module sera récupéré via un checkout. -t progname: définit un programme qui sera exécuté lorsque le module sera taggé. -u progname: définit un programme qui sera exécuté lorsqu’un cvs update sera effectué sur le répertoire racine du module en question. Qu’est-ce? Droits d’accès Ce fichier définit toutes les associations de fichiers qui représenteront les modules CVS. Il existe différents types de modules suivant la désignation que nous souhaitons leur donner. La différence entre les types de modules suivants réside dans la manière dont ils organisent les fichiers et répertoires qui les composent. Lorsque l’on utilise une méthode d’authentification, il est possible de définir une liste d’utilisateurs qui auront uniquement le droit d’accès en lecture sur le repository. Pour cela, il y a deux moyens d’y parvenir: Les modules réguliers Un module régulier est la façon la plus simple de désigner un module CVS. Il définit simplement que tel répertoire dans le repository CVS aura tel nom pour module. nom_module [options] repertoire [fichiers...] fi 7 – 14 septembre 2004 – page 4 Le fichier readers L’ensemble des utilisateurs qui seront stockés dans ce fichier auront uniquement accès au repository en lecture. Ils pourront ainsi uniquement réaliser les opérations clientes CVS en lecture (checkout, status, log), mais pas en écriture (commit, add, ...). La syntaxe de ce fichier est la suivante: CVS sur redhat cat /cvs/CVSROOT/readers utilisateur1 utilisateur2 ... utilisateurN Le fichier writers L’ensemble des utilisateurs qui seront stockés dans ce fichier auront un accès au repository en écriture. Ce qui implique que tous les autres utilisateurs n’auront qu’un accès en lecture sur ce repository. La syntaxe de ce fichier est la même que le fichier readers. Si les deux fichiers readers et writers existent, alors le fichier readers est traité en priorité, c’est à dire que: ❚ si l’utilisateur apparaît dans readers, il aura un accès en lecture uniquement; ❚ sinon et s’il n’apparaît pas dans writers, il aura également un accès en lecture uniquement; ❚ sinon,s’il n’apparaît pas dans readers mais dans writers, il aura un accès en lecture et écriture. Gestion des comptes Ce sujet, très lié au point précédent, concerne les comptes linux et CVS. La vérification des comptes lors d’une authentification peut se faire de deux manières: soit via les comptes systèmes, soit via les comptes CVS du fichier passwd qui se trouve dans le répertoire CVSROOT directement sous chaque repository. Pour désactiver l’utilisation des comptes système il faut éditer le fichier config du répertoire CVSROOT et changer la valeur de SystemAuth à no. Si la valeur vaut yes, alors CVS recherchera l’utilisateur qui souhaite se loguer parmi la liste des utilisateurs systèmes, si celui-ci n’apparaît pas dans le fichier passwd du répertoire CVSROOT. Chaque ligne du fichier passwd, qu’il faut créer, répond à la syntaxe suivante: login_CVS:[mot_de_passe_crypt][:login_systeme] ❚ ❚ login_CVS: le login utilisé par le client CVS mot_de_passe_crypt: le mot de passe chiffré avec la commande crypt. Si ce champ est omis, tous les mots de passe seront acceptés sans vérification ❚ login_systeme: l’utilisateur système utilisé par CVS pour accéder au repository. Si ce champ est omis, l’utilisateur système utilisé sera celui indiqué par le champ login_CVS. CVS ne fournit pas d’outil permettant à un utilisateur de modifier son mot de passe. Fichier .cvsignore Le fichier .cvsignore, dernier fichier d’administration traité dans cet article, définit une liste de fichiers qui seront ignorés par les commandes CVS. Cette liste peut contenir des noms de fichiers complets ou des expressions régulières. cvsignore du repository Ce fichier permet de définir des fichiers qui seront ignorés dans tout le repository sans exceptions. .cvsignore du répertoire HOME L’utilisateur peut également définir sa propre liste de fichiers ignorés, tout simplement en les ajoutant dans le fichier .cvsignore de son répertoire home. Méthodes d’authentification CVS permet d’utiliser sa propre méthode d’authentification pour se connecter au repository distant. Suivant la rapidité d’exécution ou la sécurité que nous souhaitons obtenir, une méthode d’authentification sera préférée à une autre. Il est également possible de se connecter au même repository avec des méthodes d’authentifications différentes. Personnellement, nous avons opté pour la méthode ssh qui paraît être la plus sûre et la plus appropriée. Détaillons ces différentes méthodes. Variable CVS_RSH CVS utilise par défaut le logiciel rsh pour effectuer les commandes à distance vers le repository. C’est le cas lors d’une authentification par pserver (login/mot de passe) ou kserver (Kerberos). ssh, quant à lui, offre la plus grande sécurité et correspond à un protocole rsh sécurisé par cryptage RSA. Le protocole de communication utilisé par CVS est spécifié dans la variable d’environnement CVS_RSH. export CVS_RSH=ssh La méthode pserver Il s’agit de la méthode d’authentification la plus simple. Elle s’effectue tout simplement par login et mot de passe suivant le protocole rsh. Son gros avantage est la rapidité d’exécution du serveur, qui n’a à crypter aucune donnée puisque que toutes celles-ci circuleront en clair sur le réseau, y compris le mot de passe lors de l’authentification. Son inconvénient est donc le fait que la communication ne soit aucunement sécurisée. cvs -d:pserver:[email protected]:/cvs checkout module1 Notons au passage l’utilisation de l’option «-d» pour indiquer le chemin du repository sans devoir valoriser au préalable la variable CVSROOT. La méthode kserver Cette méthode s’appuie sur l’utilisation de Kerberos, qui est un protocole d’authentification réseau créé par le MIT et qui utilise la cryptographie des clés au lieu des mots de passe en texte clair. Kerberos renforce la sécurité du système et empêche que des personnes non autorisées interceptent les mots de passe des utilisateurs. cvs -d:kserver:[email protected]:/cvs checkout module1 La méthode GSSAPI Cette méthode s’appuie sur l’utilisation d’une interface générique aux systèmes de sécurisation des réseaux. Il est ainsi fi 7 – 14 septembre 2004 – page 5 CVS sur redhat possible d’utiliser une connexion TCP/IP banale en tant que protocole de communication avec CVS, mais d’utiliser une méthode d’authentification sécurisée via GSSAPI. Il faut que le logiciel CVS ait été compilé avec le support GSSAPI pour pouvoir l’utiliser. Par défaut, GSSAPI authentifie la connexion, mais pas les données qui circuleront par cette connexion, auquel cas il faut utiliser l’option -a. cvs -d:gserver:[email protected]:/cvs checkout module1 La méthode External Protocol Cette méthode, que nous avons utilisée, s’appuie sur un logiciel externe pour réaliser la connexion et l’authentification de celle-ci. Le cas le plus courant est d’utiliser un serveur SSH pour effectuer le cryptage des données que vont s’échanger le client et le serveur CVS. N’importe quel autre logiciel de sécurisation peut être spécifié via la variable CVS_RSH. cvs -d:ext:[email protected]:/cvs checkout module1 Commandes Pour mieux comprendre le fonctionnement de CVS, il convient de signaler une série de commandes qui permettent au client d’interagir avec le serveur. A l’heure actuelle, bon nombre d’outils graphiques rendent ces dernières transparentes, toutefois l’appréhension des commandes améliore notre compréhension des processus. Les utilisateurs de linux ou macintosh en mode terminal apprécieront. cvs login La commande «cvs login» permet, comme son nom l’indique, de se connecter à un repository. Cette commande n’est utilisée que dans le cas d’une méthode d’authentification de type pserver afin de s’authentifier une seule et unique fois auprès du serveur. cvs -d:pserver:[email protected]:/cvs login ment que ce module ait été intégré dans le repository distant. Ceci se fait par la commande cvs import. Lors de l’appel de cette commande, il faut préciser quelques informations nécessaires, comme un commentaire précédé de l’option «-m», le nom du répertoire où créer le module, le nom du module que possèdera ce nouvel import et son tag actuel. cvs -d:ext:[email protected]:/cvs import -m "Ma version 1" monprojet demoi starter cvs commit La commande «cvs commit» permet aux développeurs de valider les changements qu’ils ont effectués auprès de leur copie locale d’un module, récupéré avec la commande cvs checkout. Lors du cvs commit, le logiciel cvs demande généralement à l’utilisateur de rentrer un texte de log qui permettra à l’administrateur et aux autres développeurs de prendre connaissance des modifications effectuées par ce commit. L’option -m permet de le faire en ligne de commande. cvs -d:ext:[email protected]:/cvs commit cvs status et cvs log cvs status permet de consulter le statut de la copie locale d’un fichier. Ainsi, si la copie est à jour par rapport à celle du repository, CVS retrounera un message Up-to-date. cvs -d:ext:[email protected]:/cvs status src/Makefile cvs log permet de consulter tout ou une partie des opérations réalisées sur le fichier en question (opération de commit principalement), ainsi que des informations sur ce fichier (version, branche,...). Il est ainsi possible de voir les dernières personnes qui ont contribuées aux modifications de ce fichier, ainsi que les textes de log qu’ils ont apportés sur ces modifications. cvs -d:ext:[email protected]:/cvs log src/ Makefile cvs add et cvs remove cvs - d:pserver:[email protected]:/cvs logout Lorsque un nouveau fichier est créé par le développeur dans sa copie locale, il faut savoir qu’il ne sera pas traité par CVS ni ajouté dans le repository tant que l’ordre n’aura pas été donné. La commande cvs add permet d’indiquer à CVS qu’un nouveau fichier a été créé et qu’il doit maintenant être traité comme un fichier du repository. Cependant, la commande cvs add n’ajoute pas encore le fichier dans le repository, l’envoi de données se fera uniquement au prochain cvs commit. cvs checkout cvs -d:ext:[email protected]:/cvs add src/ test.c La commande cvs checkout permet de récupérer une copie locale d’un module du repository. En effet, les développeurs ne doivent JAMAIS travailler directement sur le repository, mais en récupérer une copie locale chez eux. Ils effectuent ensuite les modifications sur cette copie, puis valident leurs modifications avec la commande cvs commit. De même, lorsque un fichier est supprimé de la copie locale, il ne disparaît pas du repository distant. Il faut en avertir CVS par la commande cvs remove. Une fois encore, le fichier ne sera réellement supprimé que lors du prochain cvs commit. cvs -d:ext:[email protected]:/cvs checkout module1 cvs -d:ext:[email protected]:/cvs remove src/test.c cvs import cvs rtag cvs logout La commande «cvs logout» permet, comme son nom l’indique, de se déconnecter d’un repository. Cette commande n’est utilisée que dans le cas d’une méthode d’authentification de type pserver. Avant de pouvoir effectuer une récupération d’un module du CVS par la commande cvs checkout, il faut bien évidemfi 7 – 14 septembre 2004 – page 6 Lorsque le développement d’un module arrive à un niveau exploitable comme la sortie d’une nouvelle version CVS sur redhat d’un logiciel par exemple, il est utile de pouvoir garder un repère dans le repository qui indiquera que l’état actuel des fichiers sera considéré comme la version 1.2 du module par exemple. Cela se fait avec la commande cvs rtag. cvs -d:ext:[email protected]:/cvs rtag V1_2 module1 De plus, il est possible de créer de nouvelles branches d’un module CVS. Une branche correspond à un nouveau stade d’évolution du module. Par exemple, il est possible de créer une branche d’un module pour implémenter les nouvelles fonctionnalités de ce module, qui sortiront dans la version suivante; et une autre branche qui servira à débuguer la version courante de ce module. Ceci se fait également par la commande cvs rtag. cvs -d:ext:[email protected]:/cvs rtag -b -r V1_0 V1_0_DEBUGGAGE cvs update Lorsque qu’un module est récupéré du repository via la commande cvs checkout et que des modifications sont effectuées sur la copie locale, il peut se passer beaucoup de temps jusqu’au prochain cvs commit. CVS étant utilisé pour du travail collaboratif sur un même module, il se peut qu’entre-temps, un autre développeur ait déjà effectué des modifications sur le repository par un commit. Il faut donc, avant d’effectuer la validation des modifications, rapatrier la nouvelle version du fichier modifié, et effectuer la fusion des deux versions. cvs -d:ext:[email protected]:/cvs update module1 cvs release Il est possible de vouloir supprimer la copie locale d’un module du repository pour, par exemple, récupérer de la place sur le disque dur. Or, il est nécessaire de vérifier, avant de supprimer la copie locale, que toutes les modifications ont bien été apportée et validée sur le repository par un cvs commit. C’est le but de la commande cvs release. Configuration serveur Tout d’abord, il faut préparer le serveur à gérer les demandes CVS. Cela se fait par le biais du super démon xinetd.d. Créons le fichier: cd /etc/xinetd.d nano cvspserver Editons le fichier et valorisons le service: # description: cvspserver service cvspserver { socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs server_args = -f --allow-root=/cvs pserver disable = no } Il est possible d’autoriser l’accès à plusieurs repositories, il suffit pour cela de répéter autant de fois que nécessaire l’option --allow-root. Vérifions que la ligne cvspserver 2401/ tcp dans le fichier /etc/services existe. Autrement, l’ajouter. Redémarrer le démon: /etc/init.d/xinetd stop /etc/init.d/xinetd start Vérifions que cette ligne xinitd startup succeeded apparaisse: cat /var/log/messages En tant que root, vérifions que LISTEN apparaisse dans la ligne suivante: netstat -nlpd | grep 2401 Authentification ssh Le serveur ssh doit être configuré. Nous n’entrerons pas dans ces détails. Il est nécessaire de préciser au préalable la méthode d’authentification Client-Serveur. Dans notre cas, nous utilisons ssh, si bien qu’il faut valoriser la variable d’environnement suivante: cvs -d:ext:[email protected]:/cvs release module1 export CVS_RSH=ssh cvs diff Cela aura pour effet que le client CVS devra se connecter en ext. S’il configure sa variable d’environnement CVSROOT, ça donnera: Une autre des fonctionnalités importantes de CVS est de pouvoir comparer deux versions d’un même fichier. Ceci est utile quand, par exemple, dans une version, un bug est apparu alors qu’il n’y était pas dans la version précédente. Il suffit donc de comparer les deux versions de ce fichier pour afficher la liste des modifications qui ont été effectuées, et ainsi retrouver très facilement d’où vient le bug en question. cvs -d:ext:[email protected]:/cvs diff -r V1_0 -r V1_2 Best Practice Nous voilà donc parés pour illustrer, par un exemple concret, la mise en place du serveur, ainsi que la gestion succincte des comptes et des droits. export CVSROOT=":ext: [email protected]:/cvs Nous avons choisi de réaliser une authentification ssh par mot de passe et non pas par clé via la cryptographie asymétrique. Cela signifie que si c’est la première connexion du client vers le serveur CVS, le serveur demande au client si le fingerprint de la clé publique présentée est bien le bon. En répondant oui, la clé publique du serveur est alors rajoutée au fichier ~/.ssh/known_hosts ou à un équivalent. Comptes Nous n’avons pas utilisé le fichier passwd du repository mais travaillé uniquement avec les comptes systèmes. La première étape à réaliser est de créer un nouvel utilisateur Unix qui sera considéré comme l’Administrateur CVS pour ce repository, ainsi qu’un groupe qui représentera fi 7 – 14 septembre 2004 – page 7 CVS sur redhat l’ensemble des utilisateurs ayant accès à ce repository, utilisateurs préalablement créés au niveau du système. useradd cvsadmin Pour ajouter un utilisateur à un groupe, il suffit d’éditer le fichier /etc/group et de rajouter l’utilisateur au bout de la ligne en séparant le nom des membres par une virgule. nom_de_groupe: champ_special: numero_de_groupe: membre1, membre2 Repository Lors de l’installation d’un serveur CVS, il faut dédier une zone de son disque dur, typiquement un répertoire, qui représentera le repository, contenant tous les modules qui seront importés dans CVS. Donc, une fois les droits d’écriture donnés aux utilisateurs et groupes, il faut initialiser le repository. Cela se fait tout simplement par la commande init de CVS. cvs -d /cvs init Cette commande créera une entrée CVSROOT sous le répertoire du repository /cvs. Ce CVSROOT, comme vu plus haut, contient entre autre les fichiers d’administration du serveur CVS. Attention: il faut être logué en tant qu’Administrateur CVS de ce repository pour faire la commande d’initialisation, sinon les fichiers créés n’auront pas les droits voulus. Droits Une fois le repository créé, il faut encore accorder les droits et permissions au groupe sur le repository. cd /cvs chgrp -R groupname . chmod ug+rwx . CVSROOT permet, comme tout client, de rapidement vérifier l’état des fichiers et répertoires. Autre TkCVS (http://www.twobarleycorns.net/tkcvs. html) est une interface graphique basée Tcl/Tk. Il affiche le statut des fichiers dans le répertoire courant et fournit des boutons et des menus pour exécuter les commandes CVS sur les fichiers sélectionnés. TkDiff est inclus pour visualiser les changements qui ont eu lieu. L’avantage principal de ce logiciel est qu’il fonctionne sur Unix, Windows et MacOSX. Pour Windows, il faut cependant obtenir la version PC de Diff. CvsGui (http://cvsgui.sourceforge.net/) est un ensemble de clients CVS écrit en C++ avec une licence GPL. Ce site contient de multiples informations sur différents autres clients. Conclusion Comme nous l’avons montré, l’installation du serveur CVS se fait très facilement. Toutefois, pour l’administrer finement au niveau des droits, des comptes, des accès et des fichiers d’administration, il faut encore acquérir de nombreux concepts. En effet, la gestion détaillée d’un tel serveur demande de longues heures de pratique et de planification, mais le jeu en vaut largement la chandelle ainsi qu’un gain de temps incomparable pour les projets communs à venir. /cvs représente ici le répertoire d’entrée pour le repository. Ces commandes sont indicatives, et chaque administrateur devra gérer sa propre stratégie d’accès. Voilà, désormais le développeur n’a plus qu’à se mettre au travail en utilisant son client CVS préféré. Références Clients CVS ❚ Nous n’avons pas testé pleinement tous les clients suivants, mais leurs spécificités semblent indiquer que toutes les fonctionnalités CVS sont intégrées. Windows TortoiseCVS (http://www.tortoisecvs.org/) semble être le client le plus approprié et facile d’utilisation pour Windows. Un simple clic droit de souris permet d’agir sur les fichiers et répertoires locaux ainsi que sur ceux du repository définis au préalable dans la variable CVSROOT des préférences du programme. Linux Cervisia (http://www.kde.org/apps/cervisia/) est un client opensource graphique pour KDE. Mais la plupart du temps il convient d’utiliser le terminal en ligne de commande pour récupérer et modifier des projets. Macintosh CVL (http://www.sente.ch/software/cvl/) pour Concurrent Versions Librarian. Il s’agit d’une interface graphique pour CVS. Il fi 7 – 14 septembre 2004 – page 8 ❚ ❚ ❚ ❚ ❚ ❚ ❚ ❚ ❚ ❚ ❚ https://www.cvshome.org/ http://www.lifl.fr/~boulet/formation/syst-dist/exposes2003-2004/cvs/index.html h t t p : / / c o a c h i n g . e p f l . c h / I N / i n d e x. php?content=cvs http://www.uta.edu/oit/how-to/docs/cvs.php http://www.int-evry.fr/mci/user/procacci/cvs/ cvs001.html http://www.fr.linuxfromscratch.org/view/blfs-1.0fr/server/cvsserver.html http://www.alianwebserver.com/informatique/ linux/cvs.htm http://www.opikanoba.org/n/?2003/11/24/6-configuration-du-serveur-cvs-sous-linux http://www.idealx.org/doc/cvs.fr.html http://ricky81.developpez.com/tutoriel/cvs/introduction/ http://okki666.free.fr/docmaster/articles/ linux102.html http://linux.ensimag.fr/cvs.html ■