Edit: A partir do Git versão 1.7.9, que é possível assinar commits Git ( git commit -S
). Atualizando a resposta um pouco para refletir isso.
O título da pergunta é:
Existe uma maneira de "autoassinar" confirmações no Git com uma chave GPG?
Resposta curta: sim, mas não faça isso.
Resolver o erro de digitação na pergunta: git commit -s
não assina a confirmação. Pelo contrário, na man git-commit
página:
-s, --signoff
Adiciona linha assinada pelo confirmador no final da mensagem de log de confirmação.
Isso fornece uma saída de log semelhante à seguinte:
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
Observe o bit "assinado por: ..."; que foi gerado pela -s
bandeira no git-commit
.
Citando o e - mail do anúncio de lançamento :
- "git commit" learns -S "para GPG-assine o commit; isso pode ser mostrado com a opção "--show-signature" em "git log".
Então, sim, você pode assinar confirmações. No entanto, peço cautela com esta opção; assinar automaticamente confirmações é quase inútil, veja abaixo:
Apenas uma pergunta secundária: talvez as confirmações não devam ser assinadas, apenas as tags que nunca crio, pois envio confirmações únicas.
Está correto. As confirmações não são assinadas; tags são. A razão para isso pode ser encontrada nesta mensagem por Linus Torvalds , cujo último parágrafo diz:
Assinar cada confirmação é totalmente estúpido. Significa apenas que você a automatiza e faz com que a assinatura valha menos. Ele também não agrega nenhum valor real, já que, da maneira como a cadeia DAG do GIT do SHA1 funciona, você só precisa de uma
assinatura para tornar todos os commits acessíveis a partir daquele que são efetivamente cobertos por esse. Portanto, assinar cada confirmação está simplesmente sem entender.
Eu incentivaria uma navegação na mensagem vinculada, que esclarece por que a assinatura confirmada automaticamente não é uma boa idéia de uma maneira muito melhor do que eu poderia.
No entanto , se você quiser assinar automaticamente uma tag , poderá fazê-lo colocando o git-tag -[s|u]
alias em um alias; se você fizer isso, provavelmente desejará configurar seu ID de chave ~/.gitconfig
ou o .git/config
arquivo específico do projeto . Mais informações sobre esse processo podem ser vistas no livro da comunidade git . A assinatura de tags é infinitamente mais útil do que a assinatura de cada confirmação que você faz.