È una buona idea GPG firmare i vecchi commit git?


9

Mi sono appena reso conto di aver dimenticato di dire a git di usare la mia chiave GPG. Avevo fatto un certo numero di commit senza firmarli. Dovrei tornare indietro e firmarli?

Non mi riferisco al fatto se dovrei o meno firmare i tag, ma ho deciso di firmare si impegna. Non credo di poter pensare a una ragione per non farlo, oltre ad avere una storia di git corrotta che potrebbe o meno essere quella che ho scritto. Confido che GitHub non scherzi con la mia cronologia git e sono l'unico autore di circa il 99% dei miei progetti, quindi, dovrei farlo?

Ho trovato questa risposta , quindi ora so che è possibile, ma filosoficamente parlando, dovrei?

Risposte:


12

Se i commit sono già stati pubblicati, non dovresti riscriverli per qualsiasi scopo (tranne la rimozione di perdite accidentali di dati), poiché ciò cambierebbe i loro ID di commit. (Ricorda che l'ID di ciascun commit si basa sugli hash SHA-1 del suo contenuto e del commit principale.)

Ciò significa che richiederebbe la riscrittura (e le dimissioni) di tutti i commit successivi e causerebbe problemi a chiunque abbia già recuperato uno di questi commit.

Ma per lo stesso motivo, non è necessario firmare esplicitamente i vecchi commit, almeno non a fini di integrità dei dati. Poiché ogni commit contiene ID basati su SHA-1 dei suoi genitori, la verifica di ogni singolo commit verificherà implicitamente anche la sua intera storia tramite la catena di hash. Non importa che la catena sia un po 'più lunga o più corta.

D'altra parte, se non ti fidi di SHA-1 per motivi di sicurezza, allora dovresti considerare la firma di commit del tutto inutile, dal momento che il contenuto del file di commit è indicato anche dagli hash SHA-1. L'unica cosa che firmi direttamente (e non un suo hash) è il messaggio di commit.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.