Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.44.1 → 2.47.0 no changes
- 2.44.0 02/23/24
- 2.42.1 → 2.43.5 no changes
- 2.42.0 08/21/23
- 2.37.3 → 2.41.2 no changes
- 2.37.2 08/11/22
- 2.33.2 → 2.37.1 no changes
- 2.33.1 10/12/21
- 2.32.1 → 2.33.0 no changes
- 2.32.0 06/06/21
- 2.25.1 → 2.31.8 no changes
- 2.25.0 01/13/20
- 2.23.1 → 2.24.4 no changes
- 2.23.0 08/16/19
- 2.18.1 → 2.22.5 no changes
- 2.18.0 06/21/18
- 2.16.6 → 2.17.6 no changes
- 2.15.4 12/06/19
- 2.10.5 → 2.14.6 no changes
- 2.9.5 07/30/17
- 2.5.6 → 2.8.6 no changes
- 2.4.12 05/05/17
- 2.3.10 no changes
- 2.2.3 09/04/15
- 2.1.4 no changes
- 2.0.5 12/17/14
SYNOPSIS
SSHÂ :
export CVS_SERVER="git cvsserver" cvs -d :ext:user@serveur/chemin/depot.git co <nom-HEAD>
pserver (/etc/inetd.conf)Â :
cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
Utilisation :
git-cvsserver [<options>] [pserveur|serveur] [<rĂ©pertoire> …]
DESCRIPTION
Cette application est une couche d’Ă©mulation CVS pour Git.
Elle est très fonctionnelle. Cependant, toutes les méthodes ne sont pas mises en œuvre, et pour les méthodes qui le sont, tous les drapeaux ne sont pas mis en œuvre.
Les tests ont été effectués en utilisant à la fois le client en ligne de commande CVS et le plugin CVS Eclipse. La plupart des fonctionnalités fonctionnent bien avec ces deux clients.
OPTIONS
Toutes ces options n’ont Ă©videmment de sens que si elles sont appliquĂ©es du cĂ´tĂ© du serveur. Elles ont Ă©tĂ© implĂ©mentĂ©es pour ressembler le plus possible aux options de git-daemon[1].
- --base-path <chemin>
-
préfixer le CVSROOT demandé par chemin
- --strict-paths
-
Ne pas autoriser les récursions dans les sous-répertoires
- --export-all
-
Ne pas vérifier
gitcvs.enabled
dans la configuration. Vous devez également spécifier une liste de répertoires autorisés (voir ci-dessous) si vous voulez utiliser cette option. - -V
- --version
-
Afficher les informations sur la version et quitter
- -h
- -H
- --help
-
Afficher les informations d’utilisation et quitter
- <répertoire>
-
Les arguments restants fournissent une liste de rĂ©pertoires. Si aucun rĂ©pertoire n’est donnĂ©, alors tous sont autorisĂ©s. Les dĂ©pĂ´ts dans ces rĂ©pertoires nĂ©cessitent toujours l’option de configuration
gitcvs.enabled
, Ă moins que--export-all
soit spécifié.
LIMITATIONS
Les clients CVS ne peuvent pas Ă©tiqueter, faire des branches ou effectuer des fusions Git.
git-cvsserver fait correspondre les branches Git aux modules CVS. C’est très diffĂ©rent de ce Ă quoi la plupart des utilisateurs de CVS s’attendent puisque dans CVS, les modules reprĂ©sentent gĂ©nĂ©ralement un ou plusieurs rĂ©pertoires.
INSTALLATION
-
Si vous comptez offrir un accès CVS via pserver, ajoutez une ligne dans /etc/inetd.conf comme suit
cvspserver stream tcp nowait nobody git-cvsserver pserver
Note : Certains serveurs inetd vous permettent de spĂ©cifier le nom de l’exĂ©cutable indĂ©pendamment de la valeur de argv[0] (c-Ă -d le nom avec lequel le programme suppose avoir Ă©tĂ© exĂ©cutĂ©). Dans ce cas, la ligne correcte dans le fichier /etc/inetd.conf est la suivante
cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
Seul l’accès anonyme est fourni par pserver par dĂ©faut. Pour valider, vous devrez crĂ©er des comptes pserver, il suffit d’ajouter un paramètre gitcvs.authdb dans le fichier de configuration des dĂ©pĂ´ts pour lesquels vous voulez que le cvsserver autorise les Ă©critures, par exemple :
[gitcvs] authdb = /etc/cvsserver/passwd
Le format de ces fichiers est le nom d’utilisateur suivi du mot de passe cryptĂ©, par exemple :
monutilisateur:sqkNi8zPf01HI monutilisateur:$1$9K7FzU28$VfF6EoPYCJEYcVQwATgOP/ monutilisateur:$5$.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3
Vous pouvez utiliser la fonction htpasswd fournie avec Apache pour crĂ©er ces fichiers, mais uniquement avec l’option -d (ou -B si votre système la prend en charge).
Utilisez de prĂ©fĂ©rence l’utilitaire spĂ©cifique au système qui gère la crĂ©ation du hachage du mot de passe sur votre plate-forme (par exemple, mkpasswd sous Linux, encrypt sous OpenBSD ou pwhash sous NetBSD) et collez-le au bon endroit.
Ensuite, fournissez votre mot de passe via la méthode pserver, par exemple :
cvs -d:pserver:unutilisateur:unmotdepasse@serveur:/chemin/depot.git co <nom_de_HEAD>
Aucune configuration particulière n’est nĂ©cessaire pour l’accès SSH, si ce n’est d’avoir les outils Git dans le PATH. Si vous avez des clients qui n’acceptent pas la variable d’environnement CVS_SERVER, vous pouvez renommer git-cvsserver ; en
cvs
.Note : Les versions plus récentes de CVS (>= 1.12.11) supportent également la spécification de CVS_SERVER directement dans CVSROOT comme
cvs -d ":ext;CVS_SERVER=git cvsserver:utilisateur@serveur/chemin/depot.git" co <nom_HEAD>
Cela prĂ©sente l’avantage d’ĂŞtre enregistrĂ© dans vos fichiers CVS/Root ; et vous n’avez pas besoin de vous soucier de toujours dĂ©finir la bonne variable d’environnement. Les utilisateurs SSH limitĂ©s Ă git-shell n’ont pas besoin de remplacer la valeur par dĂ©faut par CVS_SERVER (et ne devraient pas le faire) car git-shell comprend que
cvs
signifie git-cvsserver et prĂ©tend que l’autre extrĂ©mitĂ© exĂ©cute mieux le vrai cvs ;. -
Pour chaque dépôt que vous souhaitez rendre accessible depuis CVS, vous devez modifier la configuration du dépôt et ajouter la section suivante.
[gitcvs] enabled=1 # optionnel pour le débogage logFile=/chemin/vers/fichierjournal
Note : vous devez vous assurer que chaque utilisateur qui va invoquer git-cvsserver a un accès en Ă©criture au fichier journal et Ă la base de donnĂ©es (voir Moteur de base de donnĂ©es). Si vous souhaitez offrir un accès en Ă©criture via SSH, les utilisateurs doivent bien sĂ»r Ă©galement disposer d’un accès en Ă©criture au dĂ©pĂ´t Git lui-mĂŞme.
Vous devez Ă©galement vous assurer que chaque dĂ©pĂ´t est nu "bare" (sans fichier d’index Git) pour que
cvs commit
fonctionne. Voir gitcvs-migration[7].Toutes les variables de configuration peuvent Ă©galement ĂŞtre remplacĂ©es pour une mĂ©thode d’accès spĂ©cifique. Les noms de mĂ©thode valides sont "ext" (pour l’accès SSH) et "pserver". L’exemple de configuration suivant dĂ©sactiverait l’accès via pserver tout en autorisant l’accès via SSH.
[gitcvs] enabled=0 [gitcvs "ext"] enabled=1
-
Si vous n’avez pas spécifié le CVSROOT/CVS_SERVER directement dans la commande checkout, en l’enregistrant automatiquement dans vos fichiers CVS/Root, vous devez les définir explicitement dans votre environnement. CVSROOT doit être défini comme d’habitude, mais le répertoire doit pointer vers le dépôt Git approprié. Comme ci-dessus, pour les clients SSH non limités à git-shell, CVS_SERVER doit être défini sur git-cvsserver.
export CVSROOT=:ext:utilisateur@serveur:/var/git/projet.git export CVS_SERVER="git cvsserver"
-
Pour les clients SSH qui feront des commits, assurez-vous que leurs fichiers .ssh/environnement côté serveur (ou .bashrc, etc., selon leur shell spécifique) exportent les valeurs appropriées pour GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME et GIT_COMMITTER_EMAIL. Pour les clients SSH dont le shell de connexion est bash, .bashrc peut être une alternative raisonnable.
-
Les clients devraient maintenant pouvoir extraire le projet. Utilisez le nom du module CVS pour indiquer quel head Git vous voulez extraire. Ceci dĂ©finit Ă©galement le nom de votre rĂ©pertoire nouvellement extrait, Ă moins que vous ne l’indiquiez autrement avec
-d <nom-répertoire>
. Par exemple, ceci extrait la branche master dans le répertoiremaster-projet
 :cvs co -d master-projet master
MOTEUR DE BASE DE DONNÉES
git-cvsserver utilise une base de donnĂ©es par tĂŞte Git (c’est-Ă -dire le module CVS) pour stocker des informations sur le dĂ©pĂ´t afin de maintenir des numĂ©ros de rĂ©vision CVS cohĂ©rents. La base de donnĂ©es doit ĂŞtre mise Ă jour (c’est-Ă -dire Ă©crite) après chaque validation.
Si le commit est effectué directement en utilisant git
(par opposition Ă l’utilisation de git-cvsserver), la mise Ă jour devra se produire lors du prochain accès au dĂ©pĂ´t par git-cvsserver, indĂ©pendamment de la mĂ©thode d’accès et de l’opĂ©ration demandĂ©e.
Cela signifie que mĂŞme si vous n’offrez qu’un accès en lecture (par exemple en utilisant la mĂ©thode pserver), git-cvsserver doit avoir un accès en Ă©criture Ă la base de donnĂ©es pour fonctionner de manière fiable (sinon vous devez vous assurer que la base de donnĂ©es est Ă jour Ă chaque fois que git-cvsserver est exĂ©cutĂ©).
Par défaut, il utilise des bases de données SQLite dans le répertoire Git, nommées gitcvs.<nom-de-module>.sqlite
. Notez que le moteur SQLite crĂ©e des fichiers temporaires dans le mĂŞme rĂ©pertoire que le fichier de base de donnĂ©es lors de l’Ă©criture. Il pourrait donc ne pas ĂŞtre suffisant d’accorder aux utilisateurs utilisant git-cvsserver un accès en Ă©criture au fichier de base de donnĂ©es sans leur accorder Ă©galement un accès en Ă©criture au rĂ©pertoire.
La base de donnĂ©es ne peut pas ĂŞtre rĂ©gĂ©nĂ©rĂ©e de manière fiable sous une forme cohĂ©rente après que la branche qu’elle suit a changĂ©. Exemple : pour les branches fusionnĂ©es, git-cvsserver ne suit qu’une branche de dĂ©veloppement, et après un git merge une base de donnĂ©es mise Ă jour de manière incrĂ©mentielle peut suivre une branche diffĂ©rente de celle d’une base de donnĂ©es rĂ©gĂ©nĂ©rĂ©e Ă partir de zĂ©ro, ce qui entraĂ®ne des numĂ©ros de rĂ©vision CVS incohĂ©rents. git-cvsserver
n’a aucun moyen de savoir quelle branche il aurait choisie s’il avait Ă©tĂ© lancĂ© de manière incrĂ©mentale avant la fusion. Donc si vous devez rĂ©gĂ©nĂ©rer entièrement ou partiellement (Ă partir d’une ancienne sauvegarde) la base de donnĂ©es, vous devez vous mĂ©fier des bacs Ă sable CVS prĂ©existants.
Vous pouvez configurer le moteur de la base de données avec les variables de configuration suivantes :
Configuration du moteur de la base de données
git-cvsserver utilise le module Perl DBI. Veuillez Ă©galement lire sa documentation si vous modifiez ces variables, en particulier Ă propos de DBI->connect()
.
- gitcvs.dbName
-
Nom de la base de donnĂ©es. La signification exacte dĂ©pend du pilote de base de donnĂ©es sĂ©lectionnĂ©, pour SQLite il s’agit d’un nom de fichier. Supporte la substitution de variables (voir ci-dessous). Ne peut pas contenir de point-virgule (
;
). Valeur par défaut : %Ggitcvs.%m.sqlite - gitcvs.dbDriver
-
Pilote DBI utilisĂ©. Vous pouvez spĂ©cifier n’importe quel pilote disponible ici, mais il est possible qu’il ne fonctionne pas. cvsserver a Ă©tĂ© testĂ© avec DBD::SQLite, il a Ă©tĂ© signalĂ© comme fonctionnant avec DBD::Pg et il a Ă©tĂ© signalĂ© comme ne fonctionnant pas avec DBD::mysql. Veuillez considĂ©rer ceci comme une fonctionnalitĂ© expĂ©rimentale. Ne peut pas contenir de deux-points (
:
). Valeur par défaut : SQLite - gitcvs.dbuser
-
Utilisateur de la base de données. Seulement utile si vous définissez
dbDriver
, puisque SQLite n’a pas de concept d’utilisateur de base de donnĂ©es. Supporte la substitution de variables (voir ci-dessous). - gitcvs.dbPass
-
Mot de passe de la base de données. Seulement utile si vous définissez
dbDriver
, puisque SQLite n’a pas de concept de mot de passe de base de donnĂ©es. - gitcvs.dbTableNamePrefix
-
Préfixe du nom de la table de la base de données. Supporte la substitution de variables (voir ci-dessous). Tout caractère non alphabétique sera remplacé par un trait de soulignement.
Toutes les variables peuvent Ă©galement ĂŞtre dĂ©finies par mĂ©thode d’accès, voir ci-dessus.
Substitution de variables
Dans dbDriver
et dbUser
, vous pouvez utiliser les variables suivantes :
- %G
-
Nom du répertoire Git
- %g
-
Nom du répertoire Git, où tous les caractères sauf les alphanumériques,
.
, et-
sont remplacés par_
(cela devrait rendre plus facile l’utilisation du nom du rĂ©pertoire dans un nom de fichier si on le souhaite) - %m
-
Nom du module CVS/head Git
- %a
-
mĂ©thode d’accès (l’une des mĂ©thodes suivantes : "ext" ou "pserver")
- %u
-
Nom de l’utilisateur qui exĂ©cute git-cvsserver. Si aucun nom ne peut ĂŞtre dĂ©terminĂ©, l’uid numĂ©rique est utilisĂ©.
ENVIRONNEMENT
Ces variables rendent inutile l’utilisation d’options en ligne de commande dans certaines circonstances, ce qui permet un usage restreint plus facile via git-shell.
Lorsque ces variables d’environnement sont définies, les arguments de ligne de commande correspondants peuvent ne pas être utilisés.
NOTES POUR LE CLIENT ECLIPSE CVS
Pour obtenir une extraction avec le client CVS d’Eclipse :
-
SĂ©lectionnez "Create a new project → From CVS checkout"
-
Créez un nouvel emplacement. Consultez les notes ci-dessous pour savoir comment choisir le bon protocole.
-
Parcourez les modules disponibles. Cela vous donnera une liste des tĂŞtes dans le dĂ©pĂ´t. Vous ne pourrez pas parcourir l’arbre Ă partir de lĂ . Seulement les tĂŞtes.
-
Choisissez
HEAD
pour la branche/Ă©tiquette Ă extraire. DĂ©cochez la case "launch commit wizard" pour Ă©viter de valider le fichier .project.
Notes sur le protocole : si vous utilisez un accès anonyme via pserver, il suffit de le sĂ©lectionner. Ceux qui utilisent un accès SSH doivent choisir le protocole ext et configurer l’accès ext dans le panneau Preferences→Team→CVS→ExtConnection. DĂ©finissez CVS_SERVER Ă "git cvsserver
". Notez que la prise en charge des mots de passe n’est pas bonne lorsque vous utilisez ext vous voudrez certainement avoir des clĂ©s SSH configurĂ©es.
Alternativement, vous pouvez simplement utiliser le protocole non standard extssh que Eclipse propose. Dans ce cas, CVS_SERVER est ignorĂ©, et vous devrez remplacer l’utilitaire cvs sur le serveur par git-cvsserver ou manipuler votre .bashrc
pour que l’appel Ă cvs appelle effectivement git-cvsserver.
CLIENTS CONNUS POUR FONCTIONNER
-
CVS 1.12.9 sur Debian
-
CVS 1.11.17 sur MacOSX (Ă partir du paquet Fink)
-
Eclipse 3.0, 3.1.2 sur MacOSX (voir les notes sur le client CVS d’Eclipse)
-
TortoiseCVS
OPÉRATIONS SUPPORTÉES
Toutes les opĂ©rations nĂ©cessaires Ă une utilisation normale sont prises en charge, y compris l’extraction, la comparaison, l’Ă©tat, la mise Ă jour, le journal, l’ajout, la suppression et la validation.
La plupart des arguments de commande CVS qui lisent les Ă©tiquettes CVS ou les numĂ©ros de rĂ©vision (typiquement -r) fonctionnent, et supportent Ă©galement n’importe quel spĂ©cificateur de rĂ©fĂ©rence git (Ă©tiquette, branche, ID de commit, etc). Cependant, les numĂ©ros de rĂ©vision CVS pour les branches non-dĂ©finies par dĂ©faut ne sont pas bien Ă©mulĂ©s, et cvs log n’affiche pas du tout les Ă©tiquettes ou les branches. (Les numĂ©ros de rĂ©vision CVS des branches non principales ressemblent superficiellement aux numĂ©ros de rĂ©vision CVS, mais ils encodent en fait directement un ID de commit git, plutĂ´t que de reprĂ©senter le nombre de rĂ©visions depuis le point de branchement).
Notez qu’il y a deux façons d’extraire une branche particulière. Comme dĂ©crit ailleurs sur cette page, le paramètre "module" de cvs checkout est interprĂ©tĂ© comme un nom de branche, et il devient la branche principale. Elle reste la branche principale pour un bac Ă sable donnĂ© mĂŞme si vous rendez temporairement une autre branche collante avec cvs update -r. Alternativement, l’argument -r peut indiquer une autre branche Ă vĂ©rifier, mĂŞme si le module est toujours la branche "principale". Compromis (tel qu’implĂ©mentĂ© actuellement) : chaque nouveau "module" crĂ©e une nouvelle base de donnĂ©es sur le disque avec un historique pour le module donnĂ©, et après la crĂ©ation de la base de donnĂ©es, les opĂ©rations sur cette branche principale sont rapides. Ou alternativement, -r ne prend pas d’espace disque supplĂ©mentaire, mais peut ĂŞtre significativement plus lent pour de nombreuses opĂ©rations, comme cvs update.
Si vous voulez faire rĂ©fĂ©rence Ă une spĂ©cification de rĂ©fĂ©rence git qui contient des caractères non autorisĂ©s par CVS, vous avez deux options. Premièrement, il est possible de fournir la spĂ©cification de rĂ©fĂ©rence git directement Ă l’argument CVS -r approprié ; certains clients CVS ne semblent pas faire beaucoup de vĂ©rification de l’intĂ©gritĂ© de l’argument. Deuxièmement, si cela Ă©choue, vous pouvez utiliser un mĂ©canisme spĂ©cial d’Ă©chappement de caractères qui n’utilise que les caractères valides dans les Ă©tiquettes CVS. Une sĂ©quence de 4 ou 5 caractères de la forme (trait de soulignement ("_"
), tiret ("-"
), un ou deux caractères, et tiret ("-"
)) peut coder divers caractères basés sur les une ou deux lettres : "s"
pour la barre oblique ("/"
), "p"
pour le point (" ."
), "u"
pour le trait de soulignement ("_"
), ou deux chiffres hexadĂ©cimaux pour toute valeur d’octet (typiquement un nombre ASCII, ou peut-ĂŞtre une partie d’un caractère codĂ© UTF-8).
Les anciennes opĂ©rations de surveillance ne sont pas prises en charge (Ă©dition, surveillance et connexes). Les exportations et l’Ă©tiquetage (Ă©tiquettes et branches) ne sont pas supportĂ©s Ă ce stade.
Conversions de fin de ligne CRLF
Par défaut, le serveur laisse le mode -k
vide pour tous les fichiers, ce qui amène le client CVS à les traiter comme des fichiers texte, sujets à une conversion de fin de ligne sur certaines plateformes.
Vous pouvez faire en sorte que le serveur utilise les attributs de conversion de fin de ligne pour définir les modes -k
des fichiers en définissant la variable de configuration gitcvs.usecrlfattr
. Voir gitattributes[5] pour plus d’informations sur la conversion de fin de ligne.
Alternativement, si la configuration gitcvs.usecrlfattr
n’est pas activĂ©e ou si les attributs ne permettent pas la dĂ©tection automatique pour un nom de fichier, alors le serveur utilise la configuration gitcvs.allBinary
pour le paramètre par défaut. Si gitcvs.allBinary
est défini, alors les fichiers qui ne sont pas spécifiés autrement seront par défaut en mode -kb. Sinon, le mode -k
est laissé vide. Mais si gitcvs.allBinary
est défini à "guess", alors le mode -k
correct sera deviné en fonction du contenu du fichier.
Pour une meilleure cohérence avec cvs, il est probablement préférable de remplacer les valeurs par défaut en mettant gitcvs.usecrlfattr
Ă true, et gitcvs.allBinary
Ă "guess".
GIT
Fait partie de la suite git[1]
TRADUCTION
Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .