Come firmare automaticamente commit con magit?


13

Sono interessato a far firmare ciascuno dei miei commit con la mia chiave GPG. Dal momento che uso magit per l'interfacciamento con git, mi chiedevo se fosse possibile dire a magit di firmare ogni commit (o almeno qualche soluzione per raggiungere questo obiettivo fosse fattibile).


Git supporta persino la firma di commit? Pensavo che solo i tag potessero essere firmati ...
lunaryorn,

1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. C'è almeno un motivo per firmare ogni commit: avere una prova più forte che il commit provenga dalla persona che pensi abbia fatto. La firma dei tag consente solo di rilevare le modifiche alla cronologia.
Nsukami _

@Nsukami_Questo non risponde alla mia domanda, vero?
lunaryorn,

@lunaryorn Siamo spiacenti se non risponde alla tua domanda. Sì, Git support firma il commit
Nsukami _

Risposte:


20

In Magit i commit vengono creati usando il popup di commit ( c). Questo popup sarebbe quindi un buon punto di partenza per cercare supporto per gpg. Se lo fai, troverai questo:

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

Quindi digitare = Se selezionare un tasto. Per evitare di doverlo fare ogni volta che si crea un commit, è possibile salvare il valore di tale argomento (e tutti gli altri argomenti attualmente impostati) utilizzando C-x C-s.

Potrebbe essere necessario digitare la passphrase ogni volta. Per evitare che tu debba avviare un agente gpg e assicurarti che Emacs lo sappia, ad esempio usando lo keychainscript shell e il keychain-environmentpacchetto Emacs.

Vedi anche e imposta l' --show-signatureargomento nel popup di registrazione.


Questo è stato cambiato in transient?
tejasbubane,

1
Questo argomento è ora nascosto per impostazione predefinita. L'annuncio transitorio spiega come mostrarlo cambiando il "livello".
tarsius,

Nel caso in cui qualcuno inciampi qui guardando: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane

@tarsius Non riesco a cambiare il livello. Come posso iniziare a farlo? Grazie.
e18r

Quale parte della documentazione a cui tejasbubane si collegava non è chiara?
tarsius,

15

Prova questo nel tuo $HOME/.gitconfigo nel tuo.git/config

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

Quindi commetti come al solito.


Questa risposta ha il vantaggio di poter impostare una chiave per repository. Sembra che l' =Sopzione magit imposta la chiave $HOME/.gitconfig, quindi lo stesso per tutti i tuoi repository.
ph0t0nix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.