¿Dónde está el lugar convencional para almacenar repositorios git en un árbol de sistema de archivos de Linux?


58

Si hago una analogía con el alojamiento de un servidor web, diría que los datos de git deberían estar /var/git, por lo que mi repositorio de git estaría en/var/git/myrepo

P : ¿Es esa la suposición correcta?

Respuestas:


31

Aquí no hay una respuesta correcta o incorrecta, excepto la dictada por su propia religión personal y el contenido de la página de hier(7)manual de su sistema.

página de hiermanual típica de Linux ; página de hiermanual típica de BSD )

/var/git/*Me parece razonable personalmente. Ahí es donde guardo el mío.


3
Del mismo modo, en Arch Linux, la carpeta de apache es / srv / http (en lugar de / var / www como algunas otras distribuciones), así que pongo mis cosas de git en / srv / git.
trusktr

En algún lugar bajo / var / parece razonable, pero vea también la respuesta de Denis R a continuación: serverfault.com/a/433584/45819 - lo pone en / var / lib / git con buenas razones
mit

30

Colóquelo en un directorio (o sistema de archivos compartido) debajo /srv. Esto es para lo que sirve.

El /srvdirectorio está destinado a los datos específicos del sitio que sirve el sistema . De la norma:

Este propósito principal de especificar esto es para que los usuarios puedan encontrar la ubicación de los archivos de datos para un servicio en particular, y para que los servicios que requieren un solo árbol para datos de solo lectura, datos escribibles y scripts (como scripts cgi) puedan ubicarse razonablemente. Los datos que solo son de interés para un usuario específico deben ir al directorio de inicio de ese usuario.

La metodología utilizada para nombrar subdirectorios de /srvno está especificada, ya que actualmente no hay consenso sobre cómo se debe hacer esto. Un método para estructurar datos bajo /srves por protocolo, por ejemplo. ftp` rsync` www, y cvs. En sistemas grandes, puede ser útil para estructurar /srvpor el contexto administrativo, como /srv/physics/www, /srv/compsci/cvs, etc. Esta configuración diferirá de un huésped a otro. Por lo tanto, ningún programa debe confiar en una estructura de subdirectorio específica de /srvdatos existentes o necesariamente almacenados en /srv. Sin embargo /srv, siempre debe existir en los sistemas compatibles con FHS y debe usarse como la ubicación predeterminada para dichos datos.

Las distribuciones deben tener cuidado de no eliminar archivos colocados localmente en estos directorios sin permiso del administrador.


En un sistema habilitado para SELinux, el directorio predeterminado es /var/www/git, y los repos deben estar en sus subdirectorios. O puede usar, por ejemplo, /srv/gity configurar el contexto del archivo para que sea equivalente:

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

5
/home/git/

Esto puede parecer un poco poco convencional al principio, pero es muy razonable ya que este directorio está hecho para usted (con los permisos correctos) cuando lo hace sudo useradd git. Simplemente puede cambiar al usuario git cde inmediatamente ejecutar:

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

y coloque las claves públicas de sus pares en el archivo recién autorizado autorizado_keys.

Después de git init --baresu proyecto, la "url" es solo ... espere ...

git@<server>:<project>

Casi como se recomienda en el libro "Pro Git": git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
exic

1

Como dijo voretaq7, no existe una respuesta correcta o incorrecta sobre dicho tema. Sin embargo, si desea seguir los softs, parece que los softs de la base de datos almacenan sus datos en

/var/lib/soft

Por ejemplo, para Postgresql 9.1 en debian la carpeta es

/var/lib/postgresql/9.1/

Así que personalmente elegiría

/var/lib/git

1

Depende completamente de usted. Sin embargo, de manera óptima, debe colocar el directorio de datos git en una partición separada o incluso en un disco para facilitar las actualizaciones del sistema, etc. y, por supuesto, debe asegurarse de que haya suficiente espacio disponible en el disco.


1

En mi Arch Linux tengo /srv/httppara apache (que es el valor predeterminado del sistema) y también lo uso para mis servidores http node.js. Del mismo modo, decidí poner todos los repositorios de git /srv/git.

Yo uso GitLab, y también /srv/gites la carpeta de inicio para git en ese caso.

En última instancia, depende de usted. Descubrí que seguir un formato similar a otros servicios en su distribución es fácil de recordar.


0

Si usa algún frontend para git, simplemente vaya a donde quiera que el empaquetado por su distribución quiera colocarlos. Cualquier otra cosa es simplemente crear incompatibilidades innecesarias.


1 / No estoy usando una interfaz para git 2 / Git no viene con una recomendación sobre dónde colocar los repositorios de git ... cualquier carpeta donde hagas git init es un repositorio de git.
Samuel Rossille

1 / Por el frente asumiría el servidor git que sirve los repositorios 2 / cualquier servidor de este tipo, incluso si solo se utiliza un servidor HTTP tendría una ubicación predeterminada. Por supuesto, estamos hablando de la ubicación para el alojamiento, cuando trabajas con el código, el .git está principalmente dentro del proyecto.
hultqvist

0

Primero, con respecto a la sugerencia de usar / srv, usted asume que todos los repositorios de git se usan para sitios web. Puede ser cierto para usted, pero podría tener un software que no sea un sitio web.

En segundo lugar, al almacenar los repositorios de código fuera de / var / www / html o / srv / html, obtienes dos buenos beneficios. Puede crear enlaces simbólicos en su repositorio en cualquier nivel, lo que facilita ocultar sus bibliotecas. Además, si la ubicación de su repositorio cambia en absoluto, no tiene que modificar sus configuraciones de host virtual. En cambio, solo ajusta sus enlaces simbólicos.

Estaba usando / var / repo, pero creo que / var / git es mejor, y lo usaré de ahora en adelante.


0

Cuando descargo repositorios git para mantener las configuraciones del sitio que luego despliego las guardo en

/ data / repos / $ REPO_GROUP_OR_USER / $ REPO_NAME

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.