
É possível conectar todas as formas de criar um repositório git? Para que eu possa executar o script quando o repositório for clonado, inicializado… (existem outras maneiras, exceto mover/copiar pasta?).
Minha intenção é rastrear todos os repositórios, para não precisar passar por todos os diretórios para executar alguma ação (principalmente git status
porque às vezes esqueço de confirmar as alterações e git gc --auto
).
Responder1
Os ganchos são (atualmente) configurados exclusivamente por repositório, portanto, não pode haver ganchos ativos antes de um repositório ser criado.
Se você deseja apenas inicializar algumas configurações específicas do repositório de forma idêntica para todos os novos repositórios, você poderá usar omecanismo de modelo de repositório.
Usando seu próprio modelo, você pode
- instalar ganchos ativados (fornecendo um
<template‑dir>/hooks/<hook‑name>
arquivo), - definir variáveis de configuração (fornecendo um
<template‑dir>/config
arquivo) e - configurar regras ou atributos de exclusão por repositório (fornecendo um arquivo
<template‑dir>/info/exclude
ou<template‑dir/info/attributes>
).
Qualquer arquivo de configuração que resida em um .git
diretório pode ser colocado em um modelo para servir como cópia inicial desse arquivo em novos repositórios inicializados a partir do modelo. Suponho que você possa até fornecer objetos e referências iniciais.
Depois de ter um diretório de modelos criado com suas personalizações, você deve informar git init
e git clone
onde encontrá-lo. Isso pode ser feito explicitamente com a --template
opção (Git 0.99.4 ou posterior), ou implicitamente com a GIT_TEMPLATE_DIR
variável de ambiente (Git 1.5.0 ou posterior), ou implicitamente definindo a init.templatedir
variável de configuração no “global” (por usuário) ou Arquivos de configuração Git do “sistema” (ou seja, ~/.gitconfig
ou /etc/gitconfig
(varia de acordo com a instalação); Git 1.7.1 ou posterior).
Responder2
Você não pode "rastrear" repositórios git (como em "perguntar a algum referencial central a lista de repositórios git atualmente ativos).
Cada repositório git é independente um do outro.
Duas soluções podem ser consideradas:
um modelo git como na resposta de Chris, com um dosganchos do lado do clientecapaz, na primeira utilização, de registrar o repositório git em algum arquivo "central".
Esse arquivo seria então lido por um script externo (externo ao git), para tornar o relevantegit status
ougit gc
o que você deseja.se todos os seus repositórios git forem declarados no mesmo diretório comum, você poderá declarar um repositório git pai global e adicionar todos os sub-repos comosubmódulos.
Desdegit1.7.0,git status
sabe quando um submódulo contém alterações não confirmadas.