web-dev-qa-db-fra.com

Où est l'endroit conventionnel pour stocker les référentiels git dans une arborescence de système de fichiers linux?

Si je fais une analogie avec l'hébergement d'un serveur web, je dirais que les données de git devraient être dans /var/git, donc mon dépôt git serait dans /var/git/myrepo

Q : Est-ce la bonne supposition?

60
Samuel Rossille

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

page de manuel Linux hier typique ; page de manuel typique de BSD hier )

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

33
voretaq7

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

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

Le but principal de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service particulier et de pouvoir placer raisonnablement les services qui nécessitent 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 ne présentent d'intérêt que pour un utilisateur spécifique doivent être placées dans le répertoire personnel de cet utilisateur.

La méthodologie utilisée pour nommer les sous-répertoires de /srv n'est pas spécifié car il n'y a actuellement aucun consensus sur la manière de procéder. Une méthode pour structurer les données sous /srv est par protocole, par exemple. ftp, rsync, www et cvs. Sur les grands systèmes, il peut être utile de structurer /srv par contexte administratif, tel que /srv/physics/www, /srv/compsci/cvs, etc. Cette configuration sera différente d'un hôte à l'autre. Par conséquent, aucun programme ne doit s'appuyer sur une structure de sous-répertoire spécifique de /srv existant ou des données nécessairement stockées dans /srv. Cependant /srv doit toujours exister sur les systèmes conformes FHS et doit ê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 compatible SELinux, le répertoire par défaut est /var/www/git, et les repos devraient être dans leurs sous-répertoires. Ou, vous pouvez utiliser, par exemple /srv/git et définissez le contexte du fichier comme équivalent:

semanage fcontext -a -e /var/www/git /srv/git
33
Michael Hampton
/home/git/

Cela peut sembler un peu inhabituel au début, mais c'est très raisonnable car ce répertoire est fait pour vous (avec les autorisations correctes) lorsque vous faites Sudo useradd git. Vous pouvez simplement basculer vers l'utilisateur git, cd et exécuter immédiatement:

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

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

Après Vous git init --bare votre projet, l'url est alors juste ... attendez ...

git@<server>:<project>
5
clime

Cela dépend entièrement de vous. De manière optimale, cependant, vous devez placer le répertoire de données git sur une partition séparée ou même un disque pour faciliter les mises à niveau du système, etc. et bien sûr, vous devez vous assurer qu'il y a suffisamment d'espace disque disponible.

1
Sven

Comme l'a dit voretaq7, il n'y a pas de bonne ou de mauvaise réponse sur un tel sujet. Cependant, si vous souhaitez suivre les logiciels, il semble que les logiciels de base 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/

Je choisirais donc personnellement

/var/lib/git
1
Denis R.

Sur mon Arch Linux, j'ai /srv/http pour Apache (qui est le système par défaut) et je l'utilise également 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/git est le dossier personnel de git dans ce cas également.

En fin de compte, cela dépend de vous. J'ai trouvé que s'en tenir à un format similaire à d'autres services dans votre distribution est facile à retenir.

1
trusktr

Si vous utilisez une interface pour git, allez simplement là où celui que votre distribution veut placer. Tout le reste crée simplement des incompatibilités inutiles.

0
vonbrand

Tout d'abord, 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. Cela 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/srv/html, vous obtenez deux avantages Nice. Vous pouvez créer des liens symboliques dans votre référentiel à n'importe quel niveau, ce qui facilite le masquage de vos bibliothèques. De plus, si l'emplacement de votre référentiel change du tout, 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 je l'utiliserai désormais.

0
avatarofhope2

Lorsque je télécharge git repos afin de maintenir les configurations de site que je déploie, je les stocke dans

/ data/repos/$ REPO_GROUP_OR_USER/$ REPO_NAME

0
yosefrow