Comment signer automatiquement des commits avec magit?

13

Je souhaite que chacun de mes commits soit signé avec ma clé GPG. Puisque j'utilise magit pour interfacer avec git, je me demandais si dire à magit de signer chaque commit était possible (ou une solution de contournement pour y parvenir était possible, au moins).

shackra
la source
Git prend-il même en charge la signature de validation? Je pensais que seuls les tags pouvaient être signés…
lunaryorn
1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. Il y a au moins une raison pour signer chaque commit: pour avoir des preuves plus solides que le commit vient de la personne que vous pensez avoir fait. Les balises de signature vous permettent uniquement de détecter les modifications de l'historique.
Nsukami _
@Nsukami_That ne répond pas à ma question, n'est-ce pas?
lunaryorn du
@lunaryorn Désolé si cela ne répond pas à votre question. Oui, la signature de validation du
Nsukami _

Réponses:

20

Dans Magit, les commits sont créés à l'aide du popup de validation ( c). Ce popup serait donc un bon endroit pour commencer à chercher un support gpg. Si vous faites cela, vous trouverez ceci:

=S Sign using gpg (--gpg-sign=)

Alors tapez = Set sélectionnez une clé. Pour éviter d'avoir à le faire à chaque fois que vous créez un commit, vous pouvez enregistrer la valeur de cet argument (et de tous les autres arguments actuellement définis) à l'aide deC-x C-s .

Vous devrez peut-être toujours taper la phrase secrète à chaque fois. Pour éviter cela, vous devez démarrer un gpg-agent et vous assurer qu'Emacs le sait, par exemple en utilisant le keychainscript shell et lekeychain-environment paquet Emacs.

Voir et définir également l' --show-signatureargument dans la fenêtre contextuelle de journalisation.

tarse
la source
Cela a-t-il été modifié transient?
tejasbubane
1
Cet argument est désormais masqué par défaut. L'annonce transitoire explique comment le montrer en changeant le "niveau".
tarsius
Au cas où quelqu'un trébucherait ici en regardant: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane
@tarsius Je ne semble pas pouvoir changer le niveau. Comment dois-je procéder? Je vous remercie.
e18r
Quelle partie de la documentation à laquelle le tejasbubane est lié n'est pas claire?
tarsius
15

Essayez ceci dans votre $HOME/.gitconfigou votre.git/config

[user]
    email = YourEmail
    name = YourName
    signingkey = XXXXXXXX
[commit]
    gpgsign = true

Ensuite, engagez-vous comme d'habitude.

csantosb
la source
Cette réponse a l'avantage que vous pouvez définir une clé par référentiel. Il semble que l' =Soption de magit définit la clé $HOME/.gitconfig, donc la même chose pour tous vos référentiels.
ph0t0nix