
¿Es posible conectar todas las formas de crear un repositorio de git? Entonces puedo ejecutar el script cuando se clona, inicializa el repositorio... (¿hay otras formas, excepto mover/copiar carpeta?).
Mi intención es realizar un seguimiento de todos los repositorios, por lo que no necesito revisar todos los directorios para ejecutar alguna acción (principalmente git status
porque a veces me olvido de realizar cambios git gc --auto
).
Respuesta1
Los enlaces (actualmente) se configuran exclusivamente por repositorio, por lo que no puede haber enlaces activos antes de que se cree un repositorio.
Si solo desea inicializar algunas configuraciones específicas del repositorio de manera idéntica para todos los repositorios nuevos, es posible que pueda usar elmecanismo de plantilla de repositorio.
Usando tu propia plantilla puedes
- instalar ganchos activados (proporcionando un
<template‑dir>/hooks/<hook‑name>
archivo), - establecer variables de configuración (proporcionando un
<template‑dir>/config
archivo), y - configure reglas o atributos de exclusión por repositorio (proporcionando un archivo
<template‑dir>/info/exclude
o<template‑dir/info/attributes>
).
Cualquier archivo de configuración que se encuentre en un .git
directorio se puede colocar en una plantilla para que sirva como copia inicial de ese archivo en nuevos repositorios inicializados a partir de la plantilla. Supongo que incluso podrías proporcionar objetos y referencias iniciales.
Una vez que tenga un directorio de plantillas creado con sus personalizaciones, debe indicar git init
dónde git clone
encontrarlo. Esto se puede hacer explícitamente con la --template
opción (Git 0.99.4 o posterior), o implícitamente con la GIT_TEMPLATE_DIR
variable de entorno (Git 1.5.0 o posterior), o implícitamente estableciendo la init.templatedir
variable de configuración en el modo “global” (por usuario) o Archivos de configuración de Git del “sistema” (es decir, ~/.gitconfig
o /etc/gitconfig
(varía según la instalación); Git 1.7.1 o posterior).
Respuesta2
No puede "rastrear" repositorios de git (como en "preguntar a algún referencial central la lista de repositorios de git actualmente activos).
Cada repositorio de git es independiente de otro.
Se podrían considerar dos soluciones:
una plantilla de git como en la respuesta de Chris, con uno de losganchos del lado del clientecapaz, en el primer uso, de registrar el repositorio de git en algún archivo "central".
Ese archivo luego sería leído por un script externo (externo a git), para hacer lo relevantegit status
ogit gc
lo que desee.Si todos sus repositorios de git se declaran en el mismo directorio común, puede declarar un repositorio de git principal global y agregar todos los subrepositorios comosubmódulos.
Desdegit1.7.0,git status
sabe cuándo un submódulo contiene cambios no confirmados.