Existuje způsob, jak „autosign“ v Gitu dopustí s klíčem GPG?

hlasů
145

Existuje jednoduchý způsob, jak Git vždy podepíše každý potvrzení nebo tag, který je vytvořen?

Zkoušel jsem to s něčím, jako je:

alias zavázat = zavázat -S

Ale to stačit.

Nechci instalovat jiný program, aby se to stalo. Je to uskutečnitelný s lehkostí?

Jen boční otázka, možná dopustí by neměla být podepsána pouze značky, které jsem nikdy vytvořit, protože jsem předložit jednotlivé commitů pro projekt jako homebrew, atd

Položena 15/04/2012 v 11:26
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
184

Poznámka: Pokud nechcete přidat -Spo celou dobu, aby se ujistil vaše commity jsou podepsány, je návrh (větev ‚ pu‘ prozatím prosince 2013, takže není zaručeno, že bude dělat to, aby vydání git) pro přidání config, který se postará o tuto možnost pro vás.
Aktualizujte května 2014: to je v Gitu 2.0 (poté, co byl resend v této sérii patchů )

Viz spáchání 2af2ef3 od Nicolas Vigier (boklm) :

Přidejte commit.gpgsignmožnost podepsat všechny commitů

Chcete-li GPG podepsat všechny své commitů, musíte přidat -Sfunkci, po celou dobu. Možnost konfigurace umožňuje podepisovat všechny automaticky dopustí.
commit.gpgsign

commit.gpgsign

Booleovská určit, zda by měl být podepsán GPG všechny commitů.
Použití této možnosti při provádění operací, jako je rebase může vést k velkému počtu commitů podpisu. To může být výhodné použít agenta, aby se zabránilo zadáním gpg Passphrase několikrát.


Že config je obvykle nastaven na repo (nemusíte podepisovat své vlastní experimentální místní repo obchody):

cd /path/to/repo/needing/gpg/signature
git config commit.gpgsign true

Ty by kombinovat, že se user.signingKeypoužije jako globální nastavení (jedinečný klíč použit pro všechny repo kam chcete podepsat potvrzení)

git config --global user.signingkey F2C7AB29

user.signingKeybyl představen v git 1.5.0 (leden 2007) s zavázat d67778e :

Tam by nemělo být podmínkou, že jsem použít stejný tvar mého jména v mém git repozitáře a mé gpg klíčem.
Dále bych mohl mít více klíčů v mém klíčence, a chtít použít ten, který se neshoduje s adresou používám v commit zprávy.

Tento patch přidává položku konfigurace „ user.signingKey“, které, pokud jsou přítomny, budou předány na „-u“ přepnout na SVS, což klíčový podpis tag má být přepsána.

To je vynuceno při páchání aba9119 (git 1.5.3.2), aby se chytit případ, kdy Pokud uživatel špatně nastaven user.signingKeyve svém .git/confignebo prostě nemá žádné tajné klíče na jejich klíčence.

Poznámky:

Odpovězeno 17/12/2013 v 08:40
zdroj uživatelem

hlasů
117
git config --global user.signingKey 9E08524833CB3038FDE385C54C0AFCCFED5CDE14
git config --global commit.gpgSign true

Vyměnit 9E08524833CB3038FDE385C54C0AFCCFED5CDE14 váš klíč ID. Pamatujte: Je to nikdy dobrý nápad používat krátké ID .

UPDATE: Per novou git edikt , všechny konfigurační klíče by měly být v CamelCase.

Odpovězeno 26/05/2015 v 20:01
zdroj uživatelem

hlasů
49

Edit: Jak Git verzi 1.7.9, to je možné podepsat Git dopustí ( git commit -S). Aktualizace odpověď mírně odrážet toto.

Titulní otázka zní:

Existuje způsob, jak „autosign“ v Gitu dopustí s klíčem GPG?

Stručná odpověď: ano, ale nedělejte to.

Řešení překlep v otázce: git commit -snepodepíše commit. Spíše ze man git-commitstránky:

-s, --signoff
Přidat Signed-off-by lince příkazce na konci zprávy spáchat protokol.

To dává výstup protokolu podobný následujícímu:


± $ 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 

Všimněte si "Signed-off-by: ..." bit; který byl generován -spříznak na straně git-commit.

Cituje zpráva oznámení e-mail :

  • "Git commit" naučil "-S" na GPG podepsat commit; toto může být zobrazen s volbou „--show-podpis“ na „git log“.

Takže ano, můžete se přihlásit commitů. Nicméně, já osobně vyzývám k opatrnosti s touto volbou; automaticky podpisem zaváže je vedle zbytečné, viz níže:

Jen boční otázka, možná dopouští by neměla být podepsána pouze značky, které jsem nikdy vytvořit, protože jsem předložit jednotlivé commitů.

To je správně. Commitů nejsou podepsány; tagy jsou. Důvodem může být nalezen v této zprávě od Linuse Torvaldse , poslední odstavec, který říká:

Podpisem každém potvrzení je naprosto hloupé. Znamená to, že jste ho automatizovat, a uděláte podpis stojí méně. To také nepřidává žádnou skutečnou hodnotu, protože způsob, jakým git DAG-řetězec SHA1 práce, jen někdy budete potřebovat jeden podpis, aby všechny commitů dosažitelný z té jedné účinně pokryty, že jedna. Takže podpisu každý dopustit je prostě mimo mísu.

Já bych podpořit browse propojené zprávy, který objasňuje , proč podpis zavazuje automaticky, není dobrý nápad, v mnohem lepším způsobem, než jsem mohl.

Nicméně , pokud chcete, aby se automaticky podepsat značku , měli byste být schopni to udělat obalením git-tag -[s|u]v alias; pokud se chystáte udělat, pravděpodobně budete chtít nastavit svůj klíč ID do ~/.gitconfignebo projektu specifického .git/configsouboru. Více informací o tomto procesu může být viděn v git komunitní knihy . Podpisem značky, je nesrovnatelně užitečnější než podpisem každém potvrzení uděláte.

Odpovězeno 15/04/2012 v 23:59
zdroj uživatelem

hlasů
4

Chcete-li automatické podepsání pracovní pre git verze 2.0, budete muset přidat git alias dopustit.

# git config --global alias.commit commit -S
[alias]
    commit = commit -S
Odpovězeno 19/10/2016 v 11:01
zdroj uživatelem

hlasů
0

Potřebujete, aby bylo jasné, že pokud se přihlásíte potvrzením nebo tag, že nemáte na mysli, že schválit celou historii. V případě commitů si jen podepsat změnu po ruce, a v případě tagu, dobře .. je třeba definovat, co máte na mysli s ním. Možná jste vytáhl změnu, která tvrdí, že je od vás, ale nebyl (protože někdo jiný ji tlačil na dálkovém ovladači). Nebo je to změna, kterou nechci být, ale prostě podepsal značku.

V typických OSS projektech by to mohlo být méně časté, ale v podnikové scénáře, kde se jen dotknout kód každou chvíli a nemusíte přečíst celou historii by to mohlo dostat nepozorovaně.

Podpisem zaváže se jedná o problém v případě, že dostane rebased nebo cherry-vybral k jiným rodičům. Ale bylo by dobré, kdyby modifikovaná zavázat mohlo ukazovat na „původní“ zavázat, které ve skutečnosti ověřuje.

Odpovězeno 19/04/2013 v 02:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more