Qual é a maneira correta de verificar os dados de confirmação no Git?

13

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.

dalanmiller
fonte
4
Esta é uma ótima primeira pergunta.
Daenyth

Respostas:

7

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.

Huang Tao
fonte
1

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-receivegancho, 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 .

sleske
fonte
Obrigado pela sua resposta, e eu realmente amo o novo site Git. Meu único problema é que é difícil começar a escrever seus próprios ganchos de confirmação, especialmente porque você não sabe exatamente onde está no processo e o que deve verificar. Se estou tentando escrever um gancho de pré-recebimento, presumo que o controle remoto tenha uma ramificação de rastreamento do que estou pressionando? Como eu sei? Eu gostaria que houvesse algum tipo de recurso do git que permitisse simular o que você tem nessa instância a tempo.
21812 dalanmiller