Wie unterschreibe ich automatisch Commits mit magit?


13

Ich bin daran interessiert, dass jedes meiner Commits mit meinem GPG-Schlüssel signiert wird. Da ich magit als Schnittstelle zu git verwende, habe ich mich gefragt, ob es möglich ist, magit zu sagen, dass jeder Commit unterschrieben werden soll (oder zumindest eine Umgehung, um dies zu erreichen).


Unterstützt Git überhaupt das Signieren von Commits? Ich dachte, nur Tags könnten signiert werden…
Lunaryorn

1
@Lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. Es gibt mindestens einen Grund, die einzelnen Commits zu unterzeichnen: Sie müssen nachweisen, dass das Commit von der Person stammt, von der Sie glauben, dass sie es getan hat. Durch das Signieren von Tags können Sie nur Verlaufsänderungen erkennen.
Nsukami _

@Nsukami_Das beantwortet meine Frage nicht, oder?
Lunaryorn

@lunaryorn Entschuldigung, wenn Ihre Frage nicht beantwortet wird. Ja, Git-Support verpflichtet sich zur Unterzeichnung
Nsukami _

Antworten:


20

In Magit werden Commits mit dem Commit-Popup ( c) erstellt. Dieses Popup ist daher ein guter Ort, um nach Unterstützung für gpg zu suchen. Wenn Sie das tun, werden Sie folgendes finden:

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

Also tippe = Sund wähle einen Schlüssel. Um dies nicht jedes Mal tun zu müssen, wenn Sie ein Commit erstellen, können Sie den Wert dieses Arguments (und aller anderen aktuell gesetzten Argumente) mit speichern C-x C-s.

Möglicherweise müssen Sie die Passphrase noch jedes Mal eingeben. Um dies zu vermeiden, sollten Sie einen gpg-Agenten starten und sicherstellen, dass Emacs darüber informiert ist, z. B. mithilfe des keychainShell-Skripts und des keychain-environmentEmacs-Pakets.

Sehen Sie sich auch das --show-signatureArgument im Protokollierungs-Popup an und legen Sie es fest .


Wurde dies geändert transient?
tejasbubane

1
Dieses Argument ist jetzt standardmäßig ausgeblendet. Die vorübergehende Ansage erklärt, wie Sie sie durch Ändern des "Pegels" anzeigen können.
Tarsius


@tarsius Ich scheine nicht in der Lage zu sein, das Level zu ändern. Wie mache ich das? Vielen Dank.
e18r

Welcher Teil der Dokumentation, mit der tejasbubane verknüpft ist, ist unklar?
Tarsius

15

Versuchen Sie dies in Ihrem $HOME/.gitconfigoder Ihrem.git/config

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

Dann legen Sie einfach wie gewohnt fest.


Diese Antwort hat den Vorteil, dass Sie einen Schlüssel pro Repository festlegen können. Es scheint, dass die =SOption von magit den Schlüssel einstellt $HOME/.gitconfig, also für alle Ihre Repositories gleich.
ph0t0nix
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.