Ist es eine gute Idee, alte Git-Commits von GPG zu unterzeichnen?

9

Ich habe gerade festgestellt, dass ich vergessen habe, git anzuweisen, meinen GPG-Schlüssel zu verwenden. Ich hatte eine Reihe von Verpflichtungen eingegangen, ohne sie zu unterschreiben. Soll ich zurückgehen und sie unterschreiben?

Ich beziehe mich nicht darauf, ob ich Tags signieren soll oder nicht, aber ich habe beschlossen, Commits selbst zu signieren. Ich glaube nicht, dass ich mir einen Grund vorstellen kann, es nicht zu tun, außer eine korrupte Git-Geschichte zu haben, die vielleicht das ist, was ich geschrieben habe oder nicht. Ich vertraue darauf, dass GitHub nicht mit meiner Git-Geschichte herumspielt, und ich bin der einzige Autor von ungefähr 99% meiner Projekte. Sollte ich das tun?

Ich habe diese Antwort gefunden , also weiß ich jetzt, dass es möglich ist, aber philosophisch gesehen sollte ich?

Alexis Evelyn
quelle

Antworten:

12

Wenn die Commits bereits veröffentlicht wurden, sollten Sie sie zu keinem Zweck neu schreiben (außer zum Entfernen versehentlicher Datenlecks), da dies ihre Commit-IDs ändern würde. (Denken Sie daran, dass die ID jedes Commits auf SHA-1-Hashes seines Inhalts und des übergeordneten Commits basiert .)

Das bedeutet, dass alle nachfolgenden Commits neu geschrieben (und zurückgetreten) werden müssen , und dass jeder, der bereits einen dieser Commits abgerufen hat, Probleme bekommen würde.

Aber aus dem gleichen Grund, Sie brauchen sich nicht zu , diese alten Commits explizit unterschreiben, zumindest nicht für die Datenintegrität Zwecke. Da jedes Commit SHA-1-basierte IDs seiner Eltern enthält, wird durch die Überprüfung eines einzelnen Commits auch implizit der gesamte Verlauf über die Hash-Kette überprüft . Es spielt keine Rolle, dass die Kette etwas länger oder kürzer ist.

Wenn Sie SHA-1 jedoch aus Sicherheitsgründen nicht vertrauen, sollten Sie die Festschreibungssignierung als völlig nutzlos betrachten, da auf den Inhalt der Festschreibungsdateien auch in SHA-1-Hashes verwiesen wird. Das einzige, was Sie direkt signieren (und keinen Hash davon), ist die Festschreibungsnachricht.

user1686
quelle