Où est le lieu conventionnel pour stocker les dépôts git dans une arborescence de système de fichiers linux?


58

Si je fais une analogie avec l'hébergement d'un serveur Web, je dirais que les données de git devraient être /var/gitinsérées, afin que mon référentiel git soit inséré./var/git/myrepo

Q : Est-ce la bonne supposition?

Réponses:


31

Il n’ya pas de bonne ou de mauvaise réponse ici, sauf celle dictée par votre propre religion et le contenu de la hier(7)page de manuel de votre système.

une hierpage de manuel Linux typique ; page de manuel BSD typiquehier )

/var/git/*semble raisonnable pour moi personnellement. C'est là que je garde le mien.


3
De même, dans Arch Linux, le dossier apache est / srv / http (au lieu de / var / www, comme d’autres distributions), j’ai donc placé mon contenu git dans / srv / git.
trusktr

Quelque part dans / var / semble raisonnable, mais voir aussi la réponse de Denis R ci - dessous: serverfault.com/a/433584/45819 - il le met dans / var / lib / git avec de bonnes raisons
mit

30

Placez-le dans un répertoire (ou système de fichiers partagé) sous /srv. C'est pour ça.

Le /srvrépertoire est destiné aux données spécifiques au site servies par le système . De la norme:

Le principal objectif de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service donné et de placer raisonnablement les services nécessitant une seule arborescence pour les données en lecture seule, les données inscriptibles et les scripts (tels que les scripts cgi). Les données qui intéressent uniquement un utilisateur spécifique doivent figurer dans le répertoire de base de cet utilisateur.

La méthodologie utilisée pour nommer les sous-répertoires de /srvn'est pas spécifiée car il n'y a actuellement aucun consensus sur la façon dont cela devrait être fait. Une méthode pour structurer les données sous /srvest par protocole, par exemple. ftp, rsync, wwwEt cvs. Sur les grands systèmes , il peut être utile de structurer /srvpar le contexte administratif, comme /srv/physics/www, /srv/compsci/cvsetc. Cette configuration diffère d' un hôte à. Par conséquent, aucun programme ne doit s’appuyer sur une structure spécifique de sous-répertoires /srvexistants ou sur des données nécessairement stockées /srv. Cependant, il /srvdevrait toujours exister sur des systèmes conformes à FHS et devrait être utilisé comme emplacement par défaut pour ces données.

Les distributions doivent veiller à ne pas supprimer les fichiers placés localement dans ces répertoires sans l'autorisation de l'administrateur.


Sur un système activé pour SELinux, le répertoire par défaut est /var/www/git, et le dépôt doit se trouver dans ses sous-répertoires. Vous pouvez également utiliser, par exemple, /srv/gitet définir le contexte de fichier pour qu'il soit équivalent:

semanage fcontext -a -e /var/www/git /srv/git

5
/home/git/

Cela peut sembler un peu non conventionnel au début, mais c'est très raisonnable car ce répertoire est fait pour vous (avec les autorisations appropriées) quand vous le faites sudo useradd git. Vous pouvez simplement basculer sur l'utilisateur git cdet exécuter immédiatement:

$ mkdir .ssh; chmod 700 .ssh
$ touch .ssh/authorized_keys; chmod 600 .ssh/authorized_keys

et mettez les clés publiques de vos pairs dans le fichier allowed_keys que vous venez de créer.

Après vous git init --barevotre projet, le "url" est alors juste ... attendez ...

git@<server>:<project>

Presque comme recommandé dans le livre « Git Pro »: git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
exic

1

Comme l'a dit voretaq7, il n'y a pas de bonne ou de mauvaise réponse sur un tel sujet. Cependant, si vous voulez suivre des logiciels, il semble que les logiciels de bases de données stockent leurs données dans

/var/lib/soft

Par exemple, pour Postgresql 9.1 sur debian, le dossier est

/var/lib/postgresql/9.1/

Donc je choisirais personnellement

/var/lib/git

1

C'est entièrement à vous. De manière optimale, cependant, vous devez placer le répertoire de données git sur une partition séparée, voire un disque, pour faciliter les mises à niveau du système, etc. et bien sûr, vous devez vous assurer que vous disposez de suffisamment d'espace disque.


1

Sur Arch Linux, j’ai /srv/httppour Apache (qui est la valeur par défaut du système) et je l’utilise aussi pour mes serveurs http node.js. De même, j'ai décidé de simplement mettre tous les dépôts git dans /srv/git.

J'utilise GitLab, et /srv/gitc'est aussi le dossier personnel de git.

En fin de compte, c'est à vous de décider. J'ai trouvé qu'il était facile de se rappeler de conserver un format similaire à celui d'autres services dans votre distribution.


0

Si vous utilisez une interface pour git, allez simplement avec l'endroit où celui emballé par votre distribution veut les placer. Tout le reste ne fait que créer des incompatibilités inutiles.


1 / Je n'utilise pas d'interface pour git 2 / Git ne vient pas avec une recommandation sur l'emplacement des référentiels git ... tout dossier dans lequel vous le faites git init est un référentiel git.
Samuel Rossille

1 / Par le front end, je suppose que le serveur git servant le dépôt. 2 / un tel serveur, même si seul un serveur HTTP est utilisé aurait un emplacement par défaut. Bien sûr, nous parlons de l'emplacement pour l'hébergement. Lorsque vous travaillez avec le code, le fichier .git se trouve principalement dans le projet.
Hultqvist

0

Premièrement, en ce qui concerne la suggestion d'utiliser / srv, vous supposez que tous les référentiels git sont utilisés pour les sites Web. C'est peut-être vrai pour vous, mais vous pourriez avoir un logiciel qui n'est pas un site web.

Deuxièmement, en stockant vos référentiels de code en dehors de / var / www / html ou de / srv / html, vous obtenez deux avantages intéressants. Vous pouvez créer des liens symboliques dans votre rapport à tout niveau, ce qui facilite le masquage de vos bibliothèques. En outre, si l'emplacement de votre référentiel change, vous n'avez pas à modifier vos configurations d'hôte virtuel. Au lieu de cela, vous ajustez simplement vos liens symboliques.

J'utilisais / var / repo, mais je pense que / var / git est meilleur et l’utilisera à partir de maintenant.


0

Lorsque je télécharge git repost afin de conserver les configurations de site que je déploie ensuite, je les stocke dans

/ data / repos / $ REPO_GROUP_OR_USER / $ REPO_NAME

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.