Meu objetivo é verificar os dados de confirmação que não atendem a certos requisitos e, em seguida, rejeitar a confirmação que está sendo criada ou enviada ao repositório remoto.
O problema de fazer um gancho de pré-confirmação é que é difícil implantá-lo para muitas pessoas que precisam atualizar manualmente seu arquivo de gancho de pré-confirmação. Além disso, o Git não permite que você tenha submódulos na pasta .git, o que seria muito fácil de implementar ainda.
A outra opção que vejo é fazer o check-in. Acredito que o gancho de atualização no lado remoto, que verificará cada confirmação sendo enviada por um desenvolvedor e rejeitará o envio se alguma confirmação falhar nos testes.
Alguém tem alguma idéia sobre esse problema? E se sim, você poderia me fornecer ou apontar um exemplo de script de gancho de atualização? Estou um pouco confuso sobre como isso funciona.
Respostas:
você deve primeiro descobrir se não deseja que o código não qualificado seja confirmado ou seja enviado / publicado de volta ao upstream.
na minha opinião, o posterior é mais viável.
com um DVCS como git. você realmente não deseja controlar como cada desenvolvedor usa seu repositório local. e você realmente não pode ter controle sobre isso.
um gancho de pré-confirmação funciona bem como validação e higienização básicas, se todos os envolvidos o adotarem voluntariamente. na verdade, aplicamos isso livremente em nossa empresa. no entanto, sempre pode ser ignorado
git commit --no-verify
.o gancho do lado do servidor, por outro lado, não interfere no fluxo de trabalho local de um programador e garante que outras pessoas no projeto baseiem seu trabalho apenas no código que atenda a determinados critérios. normalmente é isso que as pessoas procuram quando implementam verificações automáticas.
essa validação automática não pretende substituir o controle de qualidade, eu acho, o que geralmente é alcançado com a revisão de código ou a programação de pares.
se você estiver familiarizado com o github , perceberá que "solicitação de recebimento" é outra abordagem para esse problema. muitos projetos e empresas de código aberto usam a solicitação pull do github para controle de permissão de ramificação e revisão de código. mas precisa de interação humana, portanto, pode não ser o que você está pedindo.
fonte
Como você já apontou, fazer isso no cliente, embora tecnicamente possível, provavelmente não é prático. Além disso, muitos usuários do git cometem trabalho interino, portanto, ter verificações draconianas em cada commit é contraproducente.
A solução padrão seria um gancho do lado do servidor. Você provavelmente configuraria um
pre-receive
gancho, que é executado toda vez que um push é acionado e que pode rejeitá-lo, se ele quiser. O restante depende das verificações exatas que você deseja fazer.Isso é explicado no Pro Git , capítulo 7.3 Personalizando Git - Git Hooks .
fonte