Content-type: text/html
cvs conserve une seule instance de chaque fichier. Cette copie est appelée « référentiel », et contient toutes les informations permettant l'extraction des versions précédentes, à la fois sur des critères de « marqueurs » ou de dates.
Attention : vous devez prendre garde à l'endroit où vous placez les options dans la ligne de commande par rapport à la commande_cvs. La même option peut avoir plusieurs significations ; à gauche de la commande_cvs c'est une option s'appliquant à l'exécutable cvs, à droite, c'est une option s'appliquant à la commande_cvs.
Seules deux situations permettent l'absence de commande_cvs : « cvs -H » ou « cvs --help » qui affiche la liste des commandes disponibles, et « cvs -v » ou « cvs --version » qui affiche la version de cvs.
Le fichier .cvsrc contient une liste des commandes CVS, accompagnées d'une liste d'arguments. Ces arguments sont automatiquement ajoutés à la ligne de commande lors de l'utilisation de la commande CVS. Il n'est possible de mettre qu'une seule commande par ligne. Exemple :
diff -c
signifie que la commande sera toujours lancée avec l'option -c, en plus des options pouvant être fournies sur la ligne de commande. Ici, les différences entre fichiers seront affichées avec leur contexte pour tout appel de la commande
Il est possible de spécifier des paramètres applicables à l'exécutable cvs en utilisant le mot clé cvs. Par exemple, la ligne :
cvs -q
signifie que toutes les commandes utiliseront l'option -q.
1 month ago (un mois auparavant) 2 hours ago (deux heures auparavant) 400000 seconds ago (400000 secondes auparavant) last year (l'année dernière) last Monday (le dernier lundi) yesterday (hier) a fortnight ago (l'avant-veille) 3/31/92 10:00:07 PST January 23, 1987 10:05pm 22:00 GMT
Les indicateurs les plus utiles sont -ko et -kb (pour les fichiers binaires) et -kv pour les export où il est important de conserver les informations des mots-clés pour un import ultérieur.
Les marqueurs sont « collants » lorsqu'ils sont utilisés avec les commandes « checkout » et « update » : ceux-ci seront réutilisés lors des mises à jour futures, sauf spécification contraire. Un marqueur peut être soit symbolique, soit numérique. L'option -q est souvent associée à l'option -r afin de supprimer les messages d'avertissements lorsque les fichiers RCS ne contiennent le marqueur demandé. L'option -r est disponible avec les commandes « checkout », « commit », « diff », « history », « export », « rdiff », « rtag » et « update ». Avertissement : cette option est différente de l'option utilisée à gauche d'une commande cvs !
Si l'argument de est un sous-répertoire, celui-ci est créé au bon endroit dans le référentiel, et les fichiers d'administration sont créés dans votre répertoire de travail. Si le répertoire existe déjà dans le réferentiel, crée quand même les fichiers d'administration dans votre répertoire de travail. Ceci permet l'utilisation de pour ajouter un répertoire à vos sources même si un autre utilisateur a déjà créé ce répertoire après votre checkout des sources. Vous pouvez par exemple faire :
exemple% mkdir nouveau_repertoire exemple% cvs add nouveau_repertoire exemple% cvs update nouveau_repertoire
Une autre façon de faire est d'utiliser la commande :
exemple% cvs update -d nouveau_repertoire
Pour ajouter tous les nouveaux répertoires du référentiel à votre répertoire de travail, il est préférable d'utiliser la commande ou
Les fichiers ajoutés ne sont pas créés dans le référentiel avant le lancement de la commande rendant les modifications permanentes. Lancer un sur un fichier supprimé avec la commande ramène le fichier à la vie si la commande n'a pas déjà été lancée.
Vous aurez la possibilité d'ajouter un message d'information lors du créant le fichier de manière permanente dans le référentiel. Pour ajouter un message lors de la création du fichier (pour décrire le but du fichier par exemple), préciser l'option à la commande add.
L'option définit de quelle manière un fichier doit être rapatrié. L'argument est enregistré dans le fichier RCS et peut être modifié avec la commande Les fichiers binaires utilisent généralement l'option précisant que les mots-clés ne doivent pas être interprétés.
Les modules sont soit des noms symboliques (définis dans le module du référentiel ; voir cvs(5)) pour certains fichiers ou répertoires, ou directement des chemins ou répertoires du référentiel.
Suivant les modules demandés, la commande checkout peut créer des sous répertoires et les remplir de fichiers. Vous pouvez ensuite modifier ces fichiers indépendemment des autres personnes, récupérer les modifications effectuées par d'autres personnes ou valider vos modifications dans le référentiel.
Il faut noter que la commande checkout crée souvent un sous-répertoire du nom du module demandé (sauf si le module demandé est un alias, auquel cas le sous-répertoire peut avoir un nom différent). La commande checkout indiquera le chemin de chaque sous-répertoire créé dans votre répertoire de travail (sauf si vous spécifiez l'option -Q).
Exécuter la commande dans un répertoire déjà construit par la commande checkout est permis, et effectue le même travail que la commande update avec l'option -d.
Les options disponibles avec la commande sont les options standards -P, -f, -k kflag , -l, -n, -p, -r tag, and -D date.
En plus de ces options, vous pouvez utiliser les options spécifiques à checkout :
L'option -A réinitialise les sticky tags, dates et options -k (si vous travaillez sur un fichier avec une option -r, -D ou -k, cvs retient les marqueurs, dates et drapeaux correspondants et continue à les utiliser pour les mises à jour futures. L'option -A signale à cvs d'oublier des spécifications et de rechercher la version ``head'' du fichier).
L'option -j " branche" fusionne les changements entre votre révision et la révision demandée (si le marqueur se réfère à une branche, cvs fusionnera tout changement effectué dans la branche dans votre fichier).
Si deux options -j sont précisées, cvs fusionne les modifications des deux révisions, pour supprimer un delta avec les fichiers de travail par exemple.
De plus, chaque option -j peut contenir une date, qui utilisée en conjonction avec les branches, peut limiter le choix de la révision à celle d'une certaine date. Une date peut être précisée en ajoutant le symbole deux-points (:) au marqueur. Un exemple peut être celui de la sortie de la commande lorsque les sources qui viennent juste d'être importées entrent en conflit avec les modifications dans le répertoire de travail.
exemple% cvs checkout -jTAG:yesterday -jTAG module
Utilisez l'option -N avec l'option pour ne pas supprimer le nom du module dans l'arborescence où sera rapatrié le module (cvs réduit normalement au plus court les noms de répertoire lorsqu'il est spécifié un répertoire d'un module à rapatrier).
Utilisez l'option -c pour récupérer la liste triée des fichiers du module sur la sortie standard. L'utilisation de cette option ne modifie pas de fichiers ou de répertoires dans le répertoire de travail.
Utilisez l'option -d repertoire pour créer un répertoire nommé repertoire où créer les fichiers, au lieu d'utiliser le nom du module. Sauf si vous précisez l'option -N, les chemins créés seront aussi courts que possible.
Utilisez l'option -s pour afficher les informations d'état stockées pour chaque module.
Si vous ne spécifiez pas de fichiers à commiter, tous les fichiers du répertoire de travail sont parcourus. commit ne modifie dans le référentiel que les fichiers qui ont réellement changé. Les fichiers dans les sous-répertoires sont aussi examinés et commités par défaut (ou en utilisant l'option -R) s'ils ont été modifiés. Il est possible d'utiliser l'option -I pour limiter le commit au répertoire courant uniquement. Il est parfois utile de forcer un commit même si le fichier n'a pas été modifié ; ceci est possible en utilisant l'option -f, qui a aussi l'effet de supprimer la récursivité (qu'il est possible de réactiver avec l'option -R).
commit vérifie que les fichiers sont en phase avec les révisions actuelles du référentiel. Si un des fichiers doit dans un premier temps être mis à jour, commit envoie le message et quitte en annulant les modifications. commit ne lance pas la commande update.
Si tout est correct, un éditeur est exécuté pour permettre la saisie d'un message de log. Ce message sera écrit dans le référentiel. Il est possible de spécifier le message directement dans la ligne de commande avec l'option -m (cela annule l'exécution de l'éditeur), ou d'utiliser l'option -F pour signaler que l'argument fichier contient le message de log.
L'option -r peut être utilisée pour commit avec une révision spécifique (qu'elle soit symbolique ou numérique). Par exemple, pour passer tous les fichiers en révision ``3.0'' (y compris ceux qui n'ont pas été modifiés), lancer la commande suivante :
exemple% cvs commit -r3.0
cvs ne permettra le commit que sur une révision du tronc (révision ne comportant qu'un seul point). Il est cependant possible de commiter sur une branche (nombre pair de points) avec l'option -r. Pour créer une révision sur une branche, il faut utiliser l'option -b des commandes rtag ou tag. D'une autre manière, checkout ou update peut être utilisé pour que vos sources utilisent la branche créée. Une fois cette opération effectuée, tout commit sur ces sources sera effectué sur la branche, de manière à ne pas perturber le développement sur la branche principale. Par exemple, si vous devez créer un patch pour la version 1.2 d'un produit, alors que la version 2.0 est en cours de développement, faites comme suit :
exemple% cvs rtag -b -rFCS1_2 FCS1_2_Patch module_produit exemple% cvs checkout -rFCS1_2_Patch module_produit exemple% cd module_produit [[ modifications diverses ]] exemple% cvs commit
Supposons que vous travaillez sur une version expérimentale du produit, ayant pour base une révision (peu importe laquelle) extraite du référentiel la semaine précédente. Si d'autres personnes travaillent sur le produit avec vous, vous pouvez commiter vos changements sur une nouvelle branche afin de ne pas déranger le développement principal. Les autres personnes peuvent également récupérer vos modifications expérimentales et utiliser les algorithmes de résolution de conflit de cvs. Voici le scénario tel qu'il pourrait être :
exemple% cvs tag -b EXPR1 exemple% cvs update -rEXPR1 [[ modifications diverses ]] exemple% cvs commit
Les autres personnes lancent la commande pour travailler avec vos modifications expérimentales.
Si vous ne spécifiez pas de fichiers, diff affiche les différences de tous les fichiers dans le répertoire courant (et ses sous-répertoires, sauf si l'option -l est spécifiée) par rapport à leur révision correspondante dans le référentiel (c'est-à-dire tous les fichiers que vous avez modifiés), ou dont la révision est différente.
Les seules options non standard sont : (écrit les sources dans le répertoire rép) et (n'abrège pas les chemins du module). Les options suivantes ont la même signification que pour la commande
L'option -kv est utile lors d'un export Les mots-clés sont étendus de manière à ce qu'un import sur un autre site ne perde pas les informations de révision. D'autres Kflags peuvent être utilisés avec et sont décrits dans co(1).
Avertissement : utilise les options et d'une manière différente de celle décrite dans la section OPTIONS DES COMMANDES .
Certaines options (indiquées ci-dessous comme -report) controlent quel type de rapport est généré :
L'argument référentiel est le nom d'un répertoire (ou le chemin vers un répertoire) sous le répertoire racine CVS ; si le répertoire n'existe pas, l'import le crée.
Lorsque vous utilisez import pour mettre à jour une source qui a été modifiée dans le référentiel source (depuis un import précédent), celui-ci vous informe des fichiers en conflit dans les deux branches de développement ; utilisez pour fusionner les différences (import vous le signalera).
Par défaut, certains fichiers sont ignorés durant un les noms des fichiers d'administration CVS , ou d'autres systèmes de gestion de version ; le noms de fichiers classiques pour les patch, les fichiers objets, les archives et les fichiers de sauvegarde des éditeurs de texte ; les noms de fichiers couramment utilisés pour ###. Pour connaître les noms de fichiers ignorés, consultez le Cederqvist (voir dans la section VOIR AUSSI de cette page de manuel).
Les fichiers sont enregistrés dans une branche, par défaut Les mises à jour sont des feuilles de cette branche ; par exemple, les fichiers d'un premier import auront comme révision et les fichiers modifiés depuis le premier import auront comme révision etc.
Au moins 3 arguments sont nécessaires. référentiel est nécessaire pour identifier la collection de source. vendortag est un marqueur pour la branche (c'est-à-dire pour Vous devez également préciser au moins un releasetag pour identifier les fichiers créés à chaque import.
Une des options standard de la commande cvs est disponible : -m. Si vous ne précisez pas de message, un éditeur de texte sera appelé (comme pour un commit) pour permettre la saisie d'un message.
Il existe trois options spéciales.
pour utiliser les dates de dernière modification de chaque fichier comme date de checkin.
pour utiliser une autre branche que
pour préciser les noms de fichiers à ignorer durant l'import. Vous pouvez utiliser plusieurs fois cette option dans une même ligne de commande. Pour qu'aucun fichier ne soit ignoré (y compris ceux ignorés par défaut), utilisez l'option
Noter que si les releases se font dans plusieurs répertoires différents, il est nécessaire d'utiliser l'option -p de la commande patch pour patcher les anciens sources.
Les options standard flags, -f et -l sont disponibles pour cette commande. Il existe également plusieurs options spéciales :
Avec l'option -s, le patch n'est pas généré. À la place, un résumé des fichiers modifiés/ajoutés/supprimés est envoyé vers la sortie standard. Cette option est utilisée pour déterminer quels ont été les fichiers modifiés entre deux dates ou révisions.
Avec l'option -t, un diff entre les deux dernières révisions du tronc sont envoyées sur la sortie standard. Utile pour déterminer quelle a été la dernière modification sur un fichier.
Avec l'option -u, le patch est sous forme « unidiff » (diff contextuel).
Il est possible d'utiliser l'option -c pour obtenir les diffs contextuels au format (format par défaut).
Pour éviter ces problèmes, la commande vérifie qu'aucun fichier n'est pas en attente de commit ; que vous exécutez cette commande dans un répertoire de travail cvs ou juste un cran au-dessus ; que le référentiel pour vos fichiers est bien le même que celui défini dans la base de données des modules.
Si toutes ces conditions sont vraies, crée un entrée dans l'historique attestant que le checkout a été abandonné.
Il est possible d'utiliser l'option -d pour demander la suppression des fichiers sources si la commande release se termine sans erreur.
Les fichiers ne sont réellement supprimés que lors de l'appel de la commande commit ; une fois cette commande lancée, les fichiers RCS dans le référentiel sont déplacés dans le répertoire (se trouvant également dans le référentiel).
Cette commande est récursive par défaut. Elle cherche tous les fichiers supprimés et les marque comme étant à supprimés au prochain commit. Utilisez l'option -l pour ne pas utiliser la récursivité. Vous pouvez sinon précisez la liste des fichiers à supprimer.
En général, les marqueurs (bien souvent les noms de version d'un logiciel) ne sont jamais supprimés. Cependant, l'option -d peut être utilisée pour supprimer des noms de marqueur obsolètes (comme celui d'une version alpha par exemple).
ne déplace pas un marqueur existant. Avec l'option -F, déplace une instance de marqueur_symbolique existant déjà sur un fichier vers une autre révision. Sans l'option -F, cette commande produit un message d'erreur.
L'option -b crée un marqueur de branche, permettant le développement de manière isolée. Ceci est utile pour créer un correctif d'une ancienne version d'un logiciel.
Vous pouvez utiliser les options -r et -D pour ne poser de marqueurs que sur les fichiers contenant déjà un marqueur spécifique. Cette méthode est utilisée pour renommer un marqueur : poser un marqueur sur les fichiers identifiés par l'ancien marqueur, puis supprimer l'ancien marqueur en laissant le nouveau marqueur sur les mêmes fichiers que ceux de l'ancien marqueur.
rtag est récursif par défaut, et pose un marqueur sur tous les sous-répertoires du module spécifié en argument. Il est possible de restreindre le marqueur aux répertoires de plus haut niveau avec l'option -l. Il est également possible de préciser la récursivité par défaut avec l'option -R.
La base de données des modules peut spécifier un programme à exécuter lorsqu'un marqueur est posé ; un cas typique est l'envoi de courriel aux utilisateurs intéressés. Si vous ne voulez pas lancer le programme, utilisez l'option -n.
Utilisez l'option -a pour rechercher les fichiers contenant le marqueur spécifié dans les sous-répertoires « Attic ». Ce marqueur est supprimé, ce qui est utile pour réutiliser un marqueur symbolique lorsque le développement continue (et que les fichiers sont supprimés des versions à venir).
Vous pouvez utiliser cette commande pour évaluer l'impact d'un sur le répertoire de travail. Si vous ne précisez pas de fichiers, le rapport est effectué pour les fichiers gérés par cvs dans votre répertoire de travail. Il est possible de limiter le rapport uniquement aux fichiers du répertoire courant (sans les sous-répertoires) avec l'option standard -l ; l'option -R demande explicitement la récursivité.
L'option -v affiche les marqueurs symboliques des fichiers RCS .
Une utilisation de ces tags est de marquer un instantané des sources utilisés lors d'un freeze. Quand des correctifs sont appliqués après cette date, seuls les fichiers modifiés doivent être marqués à nouveau.
Les marqueurs symboliques sont utiles pour garder une trace de quelle révision de quels fichiers sont utilisées lors d'une release. Les commandes checkout, export et update permettent l'extraction d'une copie exacte d'une release marquée, même si des fichiers ont été ajoutés, modifiés ou supprimés depuis la release.
Il est possible d'utiliser les options standards -r et -D pour ne marquer que les fichiers contenant déjà un certain marqueur. Cette méthode est utilisée pour renommer un marqueur : pour cela, ne marquer que les fichiers contenant déjà un certain marqueur puis supprimer l'ancien marqueur.
En utilisant en plus l'option -f en plus -r ou -D, on ne marque que les fichiers sur la ligne de commande, même s'ils ne contiennent pas le marqueur spécifié ou n'existaient pas à la date fournie.
Par défaut (sans l'option -r ou -D), les versions à marquer sont fournies implicitement par les enregistrements cvs de l'hitorique de vos fichiers de travail plutôt qu'appliquées explicitement.
Si vous utilisez le marqueur symbolique est supprimé et non ajouté. Attention : soyez sur de ce que vous faites lorsque vous supprimez un marqueur ; certaines informations importantes peuvent être supprimées.
ne déplace pas un marqueur déjà existant. Avec l'option -F, déplace une instance d'un marqueur_symbolique existant déjà vers une autre révision. Sans cette option -F, l'utilisation de pour appliquer un marqueur déjà existant sur un fichier produit un message d'erreur.
L'option -b, crée un marqueur de « branche », permettant le développement isolé. Ceci est utile pour créer un correctif sur une release ancienne.
Normalement, tag s'exécute de manière récursive ; il est possible d'utiliser l'option standard -l pour annuler cette récursivité, ou préciser explicitement la récursivité avec l'option -R.
update affiche tout ce qui est effectué au fur et à mesure de la progression, avec une ligne par fichier précédé d'un des caractères indiquant le statut du fichier :
Utilisez l'option -A pour réinitialiser les marqueurs collants, dates ou options -k (si vous avez récupéré certains fichiers avec l'une des options -r, -D, ou -k, cvs continue à utiliser ces marqueurs pour les mises à jour ultérieures ; utilisez l'option -A pour que cvs oublie ces options, et récupère la version HEAD du fichier).
L'option -jbranche fusionne les modifications effectuées sur une branche par rapport à la révision sur laquelle la branche est basée.
Avec deux options -j, cvs fusionne les modifications entre deux révisions spécifiques. Ceci peut être utilisé pour supprimer un delta d'un fichier. Par exemple, si le fichier truc.c est en révision 1.6 et que vous souhaitez supprimer les modifications effectuées entre les révisions 1.3 et 1.5, vous pouvez lancer :
exemple% cvs update -j1.5 -j1.3 foo.c # attention à l'ordre...
De plus, chaque option -j peut contenir un date, qui lorsqu'elle est utilisée avec une branche, peut limiter le choix de la révision à une certaine date. Une date est précisée en ajoutant deux points (:) au marqueur.
-jSymbolic_Tag:Date_Specifier
Utilisez l'option -d pour créer les sous-répertoires existant dans le référentiel mais pas dans votre répertoire de travail (les mises à jour ne se font en temps normal que sur les fichiers et répertoires déjà présents). Ceci est utile pour créer les sous-répertoire créés après le checkout initial ; il y a cependant un effet de bord. Si vous avez délibérément omis certains répertoires du référentiel lors de la création du répertoire de travail (en utilisant un nom de module ou en donnant explicitement la liste des fichiers à ignorer), la mise à jour avec l'option -d créera ces répertoires, ce que vous ne voulez pas forcément.
Utilisez l'option -I nom pour ignoner des fichiers dont le nom correspond à nom (dans votre répertoire de travail) durant l'update. Il est possible d'utiliser plusieurs fois l'option -I dans une même ligne de commande. Par défaut, update ignore certains fichiers (pour une liste à jour de ces noms, se reporter au Cederqvist).
Utilisez pour n'ignorer aucun fichier.
Utilisez l'option pour écraser la copie locale avec la copie propre du référentiel (le fichier modifié est sauvegardé sous le nom `.#fichier.revision').
Les options standard -f, -k, -l, -P, -p, and -r sont également disponibles avec la commande update.
Fichiers dans le répertoire utilisateur :
Fichiers dans le répertoire de travail :
Fichiers dans le référentiel :
Pour récupérer les dernières mises à jour de CVS, se tenir au courant de son développement, trouver de la documentation ou un logiciel relatif à CVS, consultez les adresses suivantes : http://www.cyclic.com et http://www.loria.fr/~molli/cvs-index.html
ci(1), co(1), cvs(5), cvsbug(8), diff(1), grep(1), patch(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1).