Git parece admitir valores de configuración en tres niveles:
- Configuración global por sistema (almacenada en
/etc/git-core
) - Configuración global por usuario (almacenada en
~/.gitconfig
) - Configuración local por repositorio (almacenada en
$REPO/.git/config
)
Estas opciones cubren la mayor parte de la base, pero estoy buscando una manera de manejar un cuarto nivel. Tengo una colección (muy) grande de repositorios para los que necesito usar un valor diferente user.email
al habitual. Estos repositorios a menudo se crean y manipulan a través de scripts automáticos, y la configuración por repositorio de configuraciones locales es engorrosa.
Todos los repositorios en cuestión están ubicados bajo un prefijo de ruta en mi sistema local. ¿Hay alguna manera de establecer un valor de configuración en algún lugar que sea heredado por todos los repositorios bajo esa ruta? (Una .htaccess
configuración similar hereda todo el sistema de archivos.) ¿Quizás habría una manera de establecer valores condicionales en el archivo de configuración global? ¿Qué otros arreglos podrían hacerse en un entorno UNIX para hacer frente a un conjunto de repositorios como el mío?
.gitconfig
en cada directorio que crean. Por ejemplo, el repositorio de Android IIRC puede hacer esto, pero debes leer la fuente cuidadosamente para averiguarlo. (No estoy completamente seguro, no he hecho eso desde hace tiempo.)Respuestas:
No he encontrado ninguna manera de configurar git en este cuarto nivel. La única forma parece ser que el valor de configuración por comando anula el uso
git -c key=value
.Mi solución hacky actual es definir una función de shell que sirva como envoltorio para git. Cuando se le llama, pasa los argumentos al comando git del sistema, pero no antes de verificar el directorio de trabajo actual y agregar un argumento adicional al comando, si corresponde.
fuente
command git -c [email protected] user.name="Alter Ego" "$@"
o cómo debo hacerlo ? Busqué alto y bajo y la única referencia a esta bandera -c que encontré fue la suya, gracias, muy apreciada.command git -c [email protected] -c user.name="Alter Ego" "$@"
Puede configurar la dirección de correo electrónico para git con la variable de entorno
GIT_AUTHOR_EMAIL
. Si combina esto con Ejecutar secuencias de comandos bash al ingresar un directorio o configuración de shell específica de directorio con zsh , puede cambiar fácilmente la configuración por directorio o directorio principal, por ejemplo, si ingresa en un directorio~/work
, puede ajustar automáticamente las variables de entorno para cambiar su correo electrónico habla a.fuente
Vea la solución basada en la configuración de git:
http://gik.firetrot.com/index.php/2018/05/06/git-configuration-across-multiple-repositories/
Añadir al archivo "~ / .gitconfig":
Cree el archivo “~ / .gitconfig-project1 ″ con contenido:
fuente
Según la respuesta de Caleb, podemos definir un
git
comando modificado que configure permanentemente todos los repositorios en este directorio correctamente, de modo que todos los usos futuros de vanilla git usen la nueva configuración. Yo usohub
, que es otro git wrapper, así que reemplacé mialias git=hub
con esto y llaméhub
a mi función; si no lo usahub
, reemplace todas lashub
invocaciones concommand git
:A diferencia de la respuesta de Caleb, que solo funciona en un shell (y a menos que sea de origen explícito, solo en un shell interactivo), esto también afecta a otros front-end de git que leen correctamente la configuración de git, como emacs magit.
fuente