Как автоматически подписывать коммиты с помощью magit?

13

Я заинтересован в том, чтобы каждая из моих коммитов была подписана моим ключом GPG. Поскольку я использую magit для взаимодействия с git, мне было интересно, возможно ли сказать magit для подписания каждого коммита (или, по крайней мере, некоторый обходной путь для достижения этого был возможен).

shackra
источник
Поддерживает ли Git подписание коммитов? Я думал, что только подписи могут быть подписаны ...
lunaryorn
1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. Существует по крайней мере одна причина подписывать каждый коммит: иметь более веские доказательства того, что коммит пришел от человека, который, как вы думаете, сделал. Подписание тегов позволяет только обнаруживать изменения в истории.
Nsukami _
@Nsukami_Это не отвечает на мой вопрос, не так ли?
lunaryorn
@lunaryorn Извините, если он не отвечает на ваш вопрос. Да, Git поддерживает подписание коммита
Nsukami _

Ответы:

20

В Magit коммиты создаются с помощью popup ( c). Поэтому это всплывающее окно будет хорошим местом для начала поиска поддержки gpg. Если вы это сделаете, то вы найдете это:

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

Поэтому введите = Sи выберите ключ. Чтобы избежать необходимости делать это каждый раз, когда вы создаете коммит, вы можете сохранить значение этого аргумента (и всех других текущих установленных аргументов), используя C-x C-s.

Возможно, вам все равно придется вводить парольную фразу каждый раз. Чтобы избежать этого, вы должны запустить gpg-agent и убедиться, что Emacs знает об этом, например, используя keychainскрипт оболочки и keychain-environmentпакет Emacs.

Также посмотрите и установите --show-signatureаргумент во всплывающем окне регистрации.

Tarsius
источник
Это было изменено в transient?
tejasbubane
1
Этот аргумент теперь скрыт по умолчанию. Временное объявление объясняет, как показать его, изменив «уровень».
tarsius
В случае, если кто-то спотыкается здесь, глядя: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane
@ tarsius Я не могу изменить уровень. Как мне заняться этим? Спасибо.
e18r
С какой частью документации, с которой связан tejasbubane, неясно?
tarsius
15

Попробуйте это в вашем $HOME/.gitconfigили вашем.git/config

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

Тогда просто коммит как обычно.

csantosb
источник
Этот ответ имеет то преимущество, что вы можете установить ключ для каждого хранилища. Кажется, что =Sопция Magit устанавливает ключ $HOME/.gitconfig, так же как и для всех ваших репозиториев.
ph0t0nix