Edit: Począwszy od wersji 1.7.9 Git, to jest możliwe do podpisania zobowiązuje Git ( git commit -S
). Lekko aktualizuję odpowiedź, aby to odzwierciedlić.
Tytuł pytania to:
Czy istnieje sposób na „autosign” zatwierdzanie w Git za pomocą klucza GPG?
Krótka odpowiedź: tak, ale nie rób tego.
Adresowanie literówki w pytaniu: git commit -s
nie podpisuje zatwierdzenia. Zamiast tego ze man git-commit
strony:
-s, --signoff
Dodaj wiersz Signed-off-by przez komisarz na końcu komunikatu dziennika zatwierdzeń.
Daje to wynik dziennika podobny do następującego:
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
Zwróć uwagę na bit „Signed-off-by: ...”; wygenerowany przez -s
flagę na stronie git-commit
.
Cytując e-maila z ogłoszeniem o wydaniu :
- „git commit” nauczył się „-S”, aby GPG podpisał zatwierdzenie; można to pokazać za pomocą opcji „--show-Signature” do „git log”.
Więc tak, możesz podpisywać zatwierdzenia. Jednak osobiście wzywam do ostrożności z tą opcją; automatyczne podpisywanie zatwierdzeń jest bezcelowe, patrz poniżej:
Tylko pytanie poboczne, być może zatwierdzenia nie powinny być podpisywane, tylko tagi, których nigdy nie tworzę, ponieważ przesyłam pojedyncze zatwierdzenia.
To jest poprawne. Zobowiązania nie są podpisane; tagi są. Powód tego można znaleźć w tym przesłaniu Linusa Torvaldsa , którego ostatni akapit mówi:
Podpisywanie każdego zatwierdzenia jest całkowicie głupie. Oznacza to po prostu, że zautomatyzujesz go i sprawisz, że podpis będzie mniej wart. To również nie wnosi żadnej realnej wartości, ponieważ sposób, w jaki łańcuch git DAG w pracy SHA1, potrzebujesz tylko jednego
podpisu, aby wszystkie zatwierdzenia dostępne z tego były skutecznie pokryte przez to. Więc podpisywanie każdego zatwierdzenia po prostu nie ma sensu.
Zachęcam do przeglądania połączonej wiadomości, która wyjaśnia, dlaczego automatyczne podpisywanie zatwierdzeń nie jest dobrym pomysłem w znacznie lepszy sposób niż ja.
Jednakże , jeśli chcesz automatycznie podpisać znacznik , będzie można to zrobić poprzez owinięcie git-tag -[s|u]
w alias; jeśli masz zamiar to zrobić, prawdopodobnie chcesz ustawić swój identyfikator klucza ~/.gitconfig
lub .git/config
plik specyficzny dla projektu . Więcej informacji na temat tego procesu można znaleźć w książce społeczności git . Podpisywanie tagów jest nieskończenie bardziej przydatne niż podpisywanie każdego dokonanego zatwierdzenia.