Eu escrevi um gancho pós-confirmação do Git e funciona corretamente. No entanto, quero adicionar esse gancho para aplicar a todos os repositórios git atuais (e futuros) nos quais estou trabalhando. Tentei adicionar o gancho ao meu em ~/.git/hooks/
vez de no diretório hooks no diretório do projeto, no entanto, isso não pareceu funcionar.
Existe alguma maneira de criar ganchos Git globais que serão aplicados a todos os repositórios no meu sistema (sem precisar copiá-los em cada diretório do projeto)? Caso contrário, qual seria a melhor solução daqui para frente - talvez um modelo git-init?
Respostas:
Com o git 2.9+ (junho de 2016), tudo o que você faria é:
Consulte " alterar ganchos padrão do git ": isso foi feito para gerenciar ganchos centralizados.
fonte
/.git/hooks/pre_commit
posso apontar para isso?A partir do git 1.7.1, você pode configurar o init.templatedir no seu gitconfig para informar ao git onde procurar por modelos.
Defina assim:
Posteriormente, novos repositórios que você criar ou clonar usarão esse diretório para modelos. Coloque os ganchos em que deseja
~/.git_template/hooks
. Os repositórios existentes podem ser reinicializados com os modelos adequados, executandogit init
o mesmo diretório.git
em que está.Para versões git anteriores à 1.7.1, a execução
git init --template ~/.git_template
funcionará se você for como eu e ainda quiser gerenciar seu.git_template
dir junto com o restante dos seus arquivos de ponto. Você também pode usar o$GIT_TEMPLATE_DIR
ambiente para dizergit init
onde está o diretório de modelos.fonte
git init
em um repo existente enxuga-lo - ele não , veja: stackoverflow.com/questions/5149694/...git init
não atualizou os ganchos para mim. Parece que não substituirá arquivos que já estão lá. stackoverflow.com/questions/10791486/ . Em vez disso, você precisa remover os arquivos antigos do gancho primeiro.Se você deseja que eles estejam em qualquer lugar do sistema (incluindo usuários além de você), poderá modificar o conteúdo do diretório de modelos instalado - esses estão
$PREFIX/share/git-core/templates/hooks
, onde$PREFIX
provavelmente está/usr/local
ou/usr
.Se você quer que isso seja apenas para você, sim, a coisa mais simples seria a
--template
opção do git-init. Você pode facilmente manter um diretório de modelo pessoal que possui links simbólicos para a versão instalada dos padrões que deseja manter (ganchos individuais, o diretório de informações ...) e, em seguida, seu próprio conteúdohooks/post-commit
e qualquer outra coisa que você queira personalizar.fonte
git init
novamente e ele adicionou meu novo gancho./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(ou mingw32 para 32-bit)mingw64\share\git-core\templates\hooks
(gfw 2.25)Uma abordagem minimalista é criar um
git_hooks/
diretório em seu repositório para rastrear os ganchos que você escreve para esse projeto, chamar a atenção de usuários futuros, mencionando-o em aREADME
, e confiar neles para fazer a coisa certa após a clonagem. Eu cogitei sobre isso por um tempo e escolhi uma abordagem incremental. No caminho, posso considerar o uso de uma ferramenta como ganchos .fonte