Edit: Depuis Git version 1.7.9, il est possible de signer Git commits ( git commit -S
). Mise à jour de la réponse légèrement pour refléter cela.
Le titre de la question est:
Existe-t-il un moyen de «signer automatiquement» dans Git avec une clé GPG?
Réponse courte: oui, mais ne le faites pas.
Résolution de la faute de frappe dans la question: git commit -s
ne signe pas le commit. Au lieu de cela, à partir de la man git-commit
page:
-s, --signoff
Ajouter une ligne signée par le committer à la fin du message du journal de validation.
Cela donne une sortie de journal similaire à la suivante:
± $ 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
Notez le bit "signé par: ..."; qui a été généré par le -s
drapeau sur le git-commit
.
Citant l' e - mail d'annonce de sortie :
- "git commit" a appris "-S" pour signer GPG le commit; cela peut être montré avec l'option "--show-signature" dans "git log".
Alors oui, vous pouvez signer des commits. Cependant, je recommande personnellement la prudence avec cette option; la signature automatique des validations est inutile, voir ci-dessous:
Juste une question secondaire, peut-être que les commits ne devraient pas être signés, seulement les balises, que je ne crée jamais, lorsque je soumets des commits uniques.
C'est correct. Les commits ne sont pas signés; les balises sont. La raison de cela peut être trouvée dans ce message de Linus Torvalds , dont le dernier paragraphe dit:
Signer chaque commit est totalement stupide. Cela signifie simplement que vous l'automatisez et que vous faites que la signature vaut moins. Cela n'ajoute pas non plus de valeur réelle, car la façon dont fonctionne la chaîne DAG git du SHA1, vous n'avez besoin que d' une seule
signature pour que tous les commits accessibles à partir de celle-ci soient effectivement couverts par celle-ci. Donc, la signature de chaque commit manque tout simplement le point.
Je vous encourage à parcourir le message lié, ce qui explique pourquoi la signature automatique des validations n'est pas une meilleure idée que je ne pourrais le faire.
Cependant , si vous souhaitez signer automatiquement une balise , vous pourrez le faire en enveloppant le git-tag -[s|u]
dans un alias; si vous voulez le faire, vous souhaiterez probablement configurer votre identifiant de clé dans ~/.gitconfig
ou le .git/config
fichier spécifique au projet . Plus d'informations sur ce processus peuvent être consultées dans le livre de la communauté git . La signature des balises est infiniment plus utile que la signature de chaque validation que vous faites.