Jak automatycznie podpisywać zatwierdzenia za pomocą magit?

13

Jestem zainteresowany podpisaniem każdego z moich zobowiązań za pomocą mojego klucza GPG. Ponieważ używam magita do łączenia się z gitem, zastanawiałem się, czy powiedzenie magitowi, aby podpisywał każde zatwierdzenie, jest możliwe (lub przynajmniej możliwe było obejście tego celu).

shackra
źródło
Czy Git obsługuje nawet podpisywanie zmian? Myślałem, że można podpisać tylko tagi…
lunaryorn
1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. Istnieje co najmniej jeden powód do podpisania każdego zatwierdzenia: mieć silniejszy dowód, że zatwierdzenie pochodziło od osoby, o której myślisz, że tak. Podpisywanie tagów pozwala tylko wykryć zmiany historii.
Nsukami _
@Nsukami_That nie odpowiada na moje pytanie, prawda?
lunaryorn,
@lunaryorn Przepraszamy, jeśli to nie odpowiada na twoje pytanie. Tak, podpisywanie zatwierdzeń przez
Nsukami _

Odpowiedzi:

20

W Magit zatwierdzenia są tworzone przy użyciu wyskakującego okienka ( c). To wyskakujące okienko byłoby zatem dobrym miejscem, aby zacząć szukać wsparcia dla gpg. Jeśli to zrobisz, znajdziesz to:

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

Więc wpisz = Si wybierz klucz. Aby uniknąć konieczności robienia tego za każdym razem, gdy tworzysz zatwierdzenie, możesz zapisać wartość tego argumentu (i wszystkich innych aktualnie ustawionych argumentów) za pomocą C-x C-s.

Może za każdym razem będziesz musiał wpisać hasło. Aby tego uniknąć, powinieneś uruchomić gpg-agent i upewnić się, że Emacs o tym wie, np. Używając keychainskryptu powłoki i keychain-environmentpakietu Emacsa.

Zobacz także i ustaw --show-signatureargument w wyskakującym okienku rejestrowania.

Tarsjusz
źródło
Czy to się zmieniło transient?
tejasbubane
1
Ten argument jest teraz domyślnie ukryty. Przejściowe ogłoszenie wyjaśnia, jak to pokazać, zmieniając „poziom”.
Tarsius
Na wypadek, gdyby ktoś potknął się tutaj, szukając: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane
@tarsius Nie wydaje się, że mogę zmienić poziom. Jak mam to zrobić? Dziękuję Ci.
e18r
Która część dokumentacji, do której odnosi się taasbubane, jest niejasna?
tarsius
15

Spróbuj tego w swoim $HOME/.gitconfiglub swoim.git/config

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

Następnie po prostu popełnij jak zwykle.

csantosb
źródło
Ta odpowiedź ma tę zaletę, że można ustawić klucz dla repozytorium. Wygląda na to, że =Sopcja magit ustawia klucz $HOME/.gitconfig, tak samo dla wszystkich twoich repozytoriów.
ph0t0nix