Git 🌙
Français ▾ Topics ▾ Latest version ▾ git-daemon last updated in 2.44.0

NOM

git-daemon - un serveur vraiment très simple pour les dépôts Git

SYNOPSIS

git daemon [--verbose] [--syslog] [--export-all]
	     [--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>]
	     [--strict-paths] [--base-path=<chemin>] [--base-path-relaxed]
	     [--user-path | --user-path=<chemin>]
	     [--interpolated-path=<chemin-de-modèle>]
	     [--reuseaddr] [--detach] [--pid-file=<fichier>]
	     [--enable=<service>] [--disable=<service>]
	     [--allow-override=<service>] [--forbid-override=<service>]
	     [--access-hook=<chemin>] [--[no-]informative-errors]
	     [--inetd |
	      [--listen=<hĂ´te-ou-adr-ip>] [--port=<n>]
	      [--user=<user> [--group=<groupe>]]]
	     [--log-destination=(stderr|syslog|none)]
	     [<rĂ©pertoire>…​]

DESCRIPTION

Un dĂ©mon TCP Git très simple qui Ă©coute normalement sur le port "DEFAULT_GIT_PORT" soit 9418. Il attend une connexion demandant un service, et servira ce service s’il est activĂ©.

Il vĂ©rifie que le rĂ©pertoire possède le fichier magique "git-daemon-export-ok", et il refusera d’exporter tout rĂ©pertoire Git qui n’a pas Ă©tĂ© explicitement marquĂ© pour l’exportation de cette façon (Ă  moins que le paramètre --export-all soit spĂ©cifiĂ©). Si vous passez certains chemins de rĂ©pertoire en tant qu’arguments de git daemon, les offres sont limitĂ©es aux dĂ©pĂ´ts dans ces rĂ©pertoires.

Par défaut, seul le service upload-pack est activé, qui sert les clients git fetch-pack et git ls-remote, qui sont invoqués depuis git fetch, git pull, et git clone.

Cette mĂ©thode convient parfaitement aux mises Ă  jour en lecture seule, c’est-Ă -dire Ă  l’extraction de dĂ©pĂ´ts Git.

Une upload-archive existe Ă©galement pour servir git archive.

OPTIONS

--strict-paths

Faire correspondre exactement les chemins (c’est-Ă -dire ne pas autoriser « /foo/dĂ©pĂ´t » lorsque le chemin rĂ©el est « /foo/dĂ©pĂ´t.git » ou « /foo/dĂ©pĂ´t/.git ») et ne pas faire de chemins relatifs Ă  l’utilisateur. git daemon refusera de dĂ©marrer lorsque cette option est activĂ©e et qu’aucun argument de rĂ©pertoire n’est spĂ©cifiĂ©.

--base-path=<chemin>

Relocalise toutes les chemins de requĂŞtes comme relatifs au chemin donnĂ©. C’est une sorte de "racine Git" - si vous exĂ©cutez git daemon avec --base-path=/srv/git sur exemple.com, alors si vous essayez plus tard de tirer git://exemple.com/hello.git, git daemon interprĂ©tera le chemin comme /srv/git/hello.git.

--base-path-relaxed

Si --base-path est activĂ© et que la recherche de dĂ©pĂ´t Ă©choue, avec cette option git daemon tentera de faire la recherche sans prĂ©fixer le chemin de base. Ceci est utile pour passer Ă  l’utilisation de --base-path, tout en autorisant toujours les anciens chemins.

--interpolated-path=<modèle-de-chemin>

Pour prendre en charge l’hĂ©bergement virtuel, un modèle de chemin interpolĂ© peut ĂŞtre utilisĂ© pour construire dynamiquement des chemins alternatifs. Le modèle prend en charge %H pour le nom d’hĂ´te cible tel que fourni par le client mais converti en minuscules, %CH pour le nom d’hĂ´te canonique, %IP pour l’adresse IP du serveur, %P pour le numĂ©ro de port et %D pour le chemin absolu du dĂ©pĂ´t nommĂ©. Après interpolation, le chemin est validĂ© par rapport Ă  la liste des rĂ©pertoires.

--export-all

Autoriser les tirages Ă  partir de tous les rĂ©pertoires qui ressemblent Ă  des dĂ©pĂ´ts Git (avec les sous-rĂ©pertoires objects et refs), mĂŞme s’ils ne possèdent pas le fichier git-daemon-export-ok.

--inetd

Faire tourner le serveur comme un service inetd. Implique --syslog (peut être surchargé avec --log-destination=). Incompatible avec les options --detach, --port, --listen, --user et --group.

--listen=<hĂ´te-ou-adr-ip>

Écouter sur une adresse IP ou un nom d’hĂ´te spĂ©cifique. Les adresses IP peuvent ĂŞtre soit une adresse IPv4, soit une adresse IPv6 si elle est supportĂ©e. Si IPv6 n’est pas supportĂ©, alors --listen=<nom-d-hote> n’est pas supportĂ© non plus et --listen doit recevoir une adresse IPv4. Peut ĂŞtre donnĂ© plus d’une fois. Incompatible avec l’option --inetd.

--port=<n>

Écouter sur un port alternatif. Incompatible avec l’option --inetd.

--init-timeout=<n>

DĂ©lai d’attente (en secondes) entre le moment oĂą la connexion est Ă©tablie et celui oĂą la demande du client est reçue (gĂ©nĂ©ralement une valeur assez faible, puisque cela devrait ĂŞtre essentiellement immĂ©diat).

--timeout=<n>

DĂ©lai d’attente (en secondes) pour les sous-requĂŞtes spĂ©cifiques du client. Cela comprend le temps nĂ©cessaire au serveur pour traiter la sous-demande et le temps d’attente de la demande du client suivant.

--max-connections=<n>

Nombre maximum de clients simultanés, la valeur par défaut est de 32. Définissez-le à zéro pour ne pas avoir de limite.

--syslog

Abréviation de --log-destination=syslog.

--log-destination=<destination>

Envoyer les messages de journal Ă  la destination spĂ©cifiĂ©e. Notez que cette option n’implique pas --verbose, donc par dĂ©faut, seules les conditions d’erreur seront enregistrĂ©es. La <destination> doit ĂŞtre l’une des suivantes :

stderr

Écriture sur le flux d’erreur standard. Notez que si --detach est spĂ©cifiĂ©, le processus se dĂ©connecte de l’erreur standard rĂ©elle, rendant cette destination effectivement Ă©quivalente Ă  none.

syslog

Écrire dans syslog, en utilisant l’identifiant git-daemon.

none

DĂ©sactiver toute la journalisation.

La destination par défaut est syslog si --inetd ou --detach est spécifié, sinon stderr.

--user-path
--user-path=<chemin>

Autoriser l’utilisation de la notation ~user dans les requêtes. Lorsqu’elle est spécifiée sans paramètre, une demande à git://hôte/~alice/foo est considérée comme une demande d’accès au dépôt foo dans le répertoire de base de l’utilisateur alice. Si --user-path=<chemin> est spécifié, la même demande est prise comme une demande d’accès au dépôt <chemin>/foo' dans le répertoire de base de l’utilisateur `alice.

--verbose

Enregistre les détails des connexions entrantes et des fichiers demandés.

--reuseaddr

Utiliser SO_REUSEADDR pour lier la socket d’Ă©coute. Cela permet au serveur de redĂ©marrer sans attendre la fin des anciennes connexions.

--detach

Se détacher du shell. Implique --syslog.

--pid-file=<fichier>

Sauvegarder l’id du processus dans le fichier. IgnorĂ© lorsque le dĂ©mon est exĂ©cutĂ© sous --inetd.

--user=<utilisateur>
--group=<groupe>

Changer le uid et gid du daemon avant d’entrer la boucle du service. Le groupe ID primaire de l’utilisateur est utilisĂ© quand seule l’option --user est donnĂ©e sans l’option --group. Les valeurs de l’option sont donnĂ©es par getpwnam(3) et getgrnam(3), les valeurs numĂ©riques ne sont pas supportĂ©es.

Donner ces options est une erreur lorsqu’elles sont utilisĂ©es avec --inetd ; utilisez la fonction du daemon inet pour rĂ©aliser la mĂŞme chose avant de lancer git daemon si nĂ©cessaire.

Comme beaucoup de programmes qui changent d’identitĂ© d’utilisateur, le daemon ne rĂ©initialise pas les variables d’environnement telles que $HOME lorsqu’il exĂ©cute les programmes git, par exemple upload-pack et receive-pack. Si vous utilisez cette option, vous voudrez peut-ĂŞtre aussi dĂ©finir et exporter HOME pour qu’il pointe sur le rĂ©pertoire personnel de <utilisateur> avant de lancer le dĂ©mon, et vous assurer que tous les fichiers de configuration de Git dans ce rĂ©pertoire sont lisibles par <utilisateur>.

--enable=<service>
--disable=<service>

Activer/désactiver le service à l’échelle du site par défaut. Notez qu’un service désactivé à l’échelle du site peut toujours être activé par dépôt s’il est marqué comme substituable et que le dépôt active le service avec un élément de configuration.

--allow-override=<service>
--forbid-override=<service>

Autoriser/interdire le remplacement de la valeur par défaut du site par une configuration par dépôt. Par défaut, tous les services peuvent être remplacés.

--[no-]informative-errors

Lorsque les erreurs informatives sont activĂ©es, git-daemon rapportera des erreurs plus dĂ©taillĂ©es au client, en diffĂ©renciant des conditions comme "no such repository" de "repository not exported". Ceci est plus pratique pour les clients, mais peut laisser fuir des informations sur l’existence de dĂ©pĂ´ts non exportĂ©s. Lorsque les erreurs informatives ne sont pas activĂ©es, toutes les erreurs signalent "accès refusĂ©" au client. La valeur par dĂ©faut est --no-informative-errors.

--access-hook=<chemin>

Chaque fois qu’un client se connecte, il lance d’abord une commande externe spĂ©cifiĂ©e par le <chemin> avec le nom du service (par exemple "upload-pack" ;), le chemin vers le dĂ©pĂ´t, le nom d’hĂ´te (%H), le nom d’hĂ´te canonique (%CH), l’adresse IP (%IP) et le port TCP (%P) comme arguments de ligne de commande. La commande externe peut dĂ©cider de refuser le service en sortant avec un Ă©tat non nul (ou de l’autoriser en sortant avec un Ă©tat nul). Elle peut Ă©galement consulter les variables d’environnement $REMOTE_ADDR et $REMOTE_PORT pour en savoir plus sur le demandeur lorsqu’elle prend cette dĂ©cision.

Le command externe peut Ă©crire optionalement une ligne en se sortie standard par ĂŞtre envoyĂ© pour le requisiteur comme une mĂ©ssage d’error quand lui decline le service.

<répertoire>

Les arguments restants fournissent une liste de rĂ©pertoires. Si des rĂ©pertoires sont spĂ©cifiĂ©s, alors le processus git-daemon servira un rĂ©pertoire demandĂ© seulement s’il est contenu dans un de ces rĂ©pertoires. Si --strict-paths est spĂ©cifiĂ©, alors le rĂ©pertoire demandĂ© doit correspondre exactement Ă  l’un de ces rĂ©pertoires.

SERVICES

Ces services peuvent ĂŞtre globalement activĂ©s/dĂ©sactivĂ©s en utilisant les options de la ligne de commande de cette commande. Si un contrĂ´le plus fin est souhaitĂ© (par exemple pour permettre Ă  git archive d’ĂŞtre exĂ©cutĂ© uniquement dans quelques dĂ©pĂ´ts sĂ©lectionnĂ©s que le dĂ©mon sert), le fichier de configuration par dĂ©pĂ´t peut ĂŞtre utilisĂ© pour les activer ou les dĂ©sactiver.

upload-pack

Cela sert les clients git fetch-pack et git ls-remote. Il est activĂ© par dĂ©faut, mais un dĂ©pĂ´t peut le dĂ©sactiver en definissant l’Ă©lement de configuration daemon.uploadpack sur false.

upload-archive

Cela sert git archive --remote. Il est dĂ©sactivĂ© par dĂ©faut, mais un dĂ©pĂ´t peut l’activer en definissant l’element de configuration daemon.uploadarch sur true.

receive-pack

Cette fonction est destinĂ©e aux clients "git send-pack" et permet de faire des poussĂ©es anonymes. Il est dĂ©sactivĂ© par dĂ©faut, car il n’y a pas d’authentification dans le protocole (en d’autres termes, n’importe qui peut pousser n’importe quoi dans le dĂ©pĂ´t, y compris la suppression des rĂ©fĂ©rences). Ceci est uniquement destinĂ© Ă  un environnement LAN fermĂ© oĂą tout le monde est amical. Ce service peut ĂŞtre activĂ© en mettant l’Ă©lĂ©ment de configuration daemon.receivepack Ă  true.

EXEMPLES

Nous supposons ce qui suit dans /etc/services
$ grep 9418 /etc/services
git		9418/tcp		# Système de gestion de version Git
git daemon comme serveur inetd

Pour configurer git daemon comme un service inetd qui gère tout dépôt sous /pub/foo ou /pub/bar, placez une entrée comme ceci dans /etc/inetd sur une seule ligne :

	git stream tcp nowait nobody  /usr/bin/git
		git daemon --inetd --verbose --export-all
		/pub/foo /pub/bar
git daemon comme serveur inetd pour des hĂ´tes virtuels

Pour configurer git daemon en tant que service inetd qui gère les dépôts pour différents hôtes virtuels, www.example.com et www.example.org, placez une entrée comme celle-ci dans /etc/inetd sur une seule ligne :

	git stream tcp nowait nobody /usr/bin/git
		git daemon --inetd --verbose --export-all
		--interpolated-path=/pub/%H%D
		/pub/www.example.org/software
		/pub/www.example.com/software
		/software

Dans cet exemple, le rĂ©pertoire de niveau racine /pub contiendra un sous-rĂ©pertoire pour chaque nom d’hĂ´te virtuel supportĂ©. De plus, les deux hĂ´tes annoncent les dĂ©pĂ´ts simplement comme git://www.example.com/software/repo.git. Pour les clients antĂ©rieurs Ă  la version 1.4.0, un lien symbolique de /software vers le dĂ©pĂ´t par dĂ©faut appropriĂ© peut Ă©galement ĂŞtre crĂ©Ă©.

git daemon comme démon régulier pour des hôtes virtuels

Pour configurer git daemon comme un service ordinaire, non inetd, qui gère les dépôts de plusieurs hôtes virtuels en fonction de leurs adresses IP, démarrez le daemon comme suit :

	git daemon --verbose --export-all
		--interpolated-path=/pub/%IP/%D
		/pub/192.168.1.200/software
		/pub/10.10.220.23/software

Dans cet exemple, le rĂ©pertoire de niveau racine /pub contiendra un sous-rĂ©pertoire pour chaque adresse IP d’hĂ´te virtuel supportĂ©e. Les dĂ©pĂ´ts peuvent toujours ĂŞtre accĂ©dĂ©s par nom d’hĂ´te, en supposant qu’ils correspondent Ă  ces adresses IP.

activer/désactiver sélectivement les services par dépôt

Pour activer l’option git archive --remote et dĂ©sactiver l’option git fetch contre un dĂ©pĂ´t, il faut avoir ce qui suit dans le fichier de configuration du dĂ©pĂ´t (c’est-Ă -dire le fichier config Ă  cĂ´tĂ© de HEAD, refs et objects).

	[daemon]
		uploadpack = false
		uploadarch = true

ENVIRONNEMENT

git daemon dĂ©finira REMOTE_ADDR Ă  l’adresse IP du client qui s’est connectĂ© Ă  lui, si l’adresse IP est disponible. REMOTE_ADDR sera disponible dans l’environnement des crochets appelĂ©s lors de l’exĂ©cution des services.

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 .

scroll-to-top