¿Cómo firmar automáticamente commits con magit?

13

Estoy interesado en firmar cada una de mis confirmaciones con mi clave GPG. Como uso magit para interactuar con git, me preguntaba si era posible decirle a magit que firmara cada confirmación (o alguna solución para lograrlo era factible, al menos).

Shackra
fuente
¿Git incluso admite la firma de compromiso? Pensé que solo las etiquetas podían firmarse ...
lunaryorn
1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. Hay al menos una razón para firmar cada compromiso: tener pruebas más sólidas de que el compromiso provino de la persona que crees que hizo. Firmar etiquetas solo le permite detectar cambios en el historial.
Nsukami _
@Nsukami_Eso no responde mi pregunta, ¿verdad?
lunaryorn
@lunaryorn Lo siento si no responde tu pregunta. Sí, firma de compromiso de
Nsukami _

Respuestas:

20

En Magit, las confirmaciones se crean utilizando la ventana emergente de confirmación ( c). Esa ventana emergente, por lo tanto, sería un buen lugar para comenzar a buscar soporte de gpg. Si haces eso, entonces encontrarás esto:

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

Entonces escriba = Sy seleccione una tecla. Para evitar tener que hacer eso cada vez que crea una confirmación, puede guardar el valor de ese argumento (y todos los demás argumentos establecidos actualmente) utilizando C-x C-s.

Es posible que aún tenga que escribir la frase de contraseña cada vez. Para evitar eso, debe iniciar un agente gpg y asegurarse de que Emacs lo sepa, por ejemplo, utilizando el keychainscript de shell y el keychain-environmentpaquete Emacs.

También vea y configure el --show-signatureargumento en la ventana emergente de registro.

tarsius
fuente
¿Ha sido cambiado esto transient?
tejasbubane
1
Este argumento ahora está oculto por defecto. El anuncio transitorio explica cómo mostrarlo cambiando el "nivel".
Tarsius
En caso de que alguien tropiece aquí buscando: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane
@tarsius Parece que no puedo cambiar el nivel. ¿Cómo empiezo a hacer eso? Gracias.
e18r
¿Qué parte de la documentación a la que se unió Tejasbubane no está clara?
tarsius
15

Prueba esto en tu $HOME/.gitconfigo tu.git/config

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

Entonces solo comete como de costumbre.

csantosb
fuente
Esta respuesta tiene la ventaja de que puede establecer una clave por repositorio. Parece que la =Sopción de magit establece la clave $HOME/.gitconfig, por lo que es lo mismo para todos sus repositorios.
ph0t0nix