Was ist der Sinn der Abmeldefunktion in Git ? ?
git commit --signoff
Wann sollte ich es verwenden, wenn überhaupt?
quelle
Was ist der Sinn der Abmeldefunktion in Git ? ?
git commit --signoff
Wann sollte ich es verwenden, wenn überhaupt?
Das Abmelden ist eine Voraussetzung, um Patches in den Linux-Kernel und einige andere Projekte zu integrieren, aber die meisten Projekte verwenden ihn nicht wirklich.
Es wurde im Zuge der SCO-Klage (und anderer Vorwürfe wegen Urheberrechtsverletzung durch SCO , von denen die meisten nie vor Gericht gebracht wurden) als Ursprungszeugnis für Entwickler eingeführt . Es wird verwendet, um zu bestätigen, dass Sie bestätigen, dass Sie den betreffenden Patch erstellt haben, oder dass Sie nach bestem Wissen bestätigen, dass er unter einer geeigneten Open-Source-Lizenz erstellt wurde oder dass er Ihnen von jemandem zur Verfügung gestellt wurde sonst unter diesen Bedingungen. Dies kann dazu beitragen, eine Kette von Personen aufzubauen, die für den Urheberrechtsstatus des betreffenden Codes verantwortlich sind, um sicherzustellen, dass urheberrechtlich geschützter Code, der nicht unter einer geeigneten Lizenz für freie Software (Open Source) veröffentlicht wurde, nicht im Kernel enthalten ist.
Signed-off-by:
Commit-Nachrichtenzeilen vom Linux-Kernel-Projekt (und dem Git-Projekt selbst) zugewiesen wurde . Für andere Projekte sind solche Zeilen jedoch bedeutungslos, es sei denn, das Projekt weist ihnen eine Bedeutung zu (z. B. indem sie in der Projektdokumentation beschrieben werden, z. B. Linux's SubmissionPatches oder Git's SubmissionPatches ).Die Abmeldung ist eine Zeile am Ende der Festschreibungsnachricht, die bestätigt, wer der Autor der Festschreibung ist. Sein Hauptzweck ist es, die Verfolgung zu verbessern, wer was getan hat, insbesondere mit Patches.
Beispiel Commit:
Es sollte den echten Benutzernamen enthalten, wenn es für ein Open-Source-Projekt verwendet wird.
Wenn der Zweigstellenbetreuer Patches geringfügig ändern muss, um sie zusammenzuführen, könnte er den Übermittler auffordern, die Patches neu zu erstellen, dies wäre jedoch kontraproduktiv. Er kann den Code anpassen und seine Abmeldung am Ende setzen, damit der ursprüngliche Autor den Patch weiterhin gutschreibt.
Quelle: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
quelle
author
Bereich eines Git-Commits? Ich dachte immer , das ist , warum es ein separates warauthor
undcommitter
Feld. Der Autor ist der Patch-Writer und der Committer der Typ, der den Patch angewendet und gepusht hat.Git 2.7.1 (Februar 2016) stellt klar, dass in Commit b2c150d (05. Januar 2016) von David A. Wheeler (
david-a-wheeler
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 7aae9ba , 05. Februar 2016)git commit
Manpage enthält jetzt:Beachten Sie, dass diese Abmeldung jetzt (für Git 2.15.x / 2.16, Q1 2018) für verfügbar ist
git pull
.Siehe Commit 3a4d2c7 (12. Oktober 2017) von W. Trevor King (
wking
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit fb4cd88 , 06. November 2017)quelle
Zu dieser Frage gibt es einige nette Antworten. Ich werde versuchen, eine breitere Antwort hinzuzufügen, nämlich darüber, worum es bei solchen Linien / Überschriften / Anhängern in der gegenwärtigen Praxis geht. Nicht so sehr über den Sign-Off-Header (es ist nicht der einzige).
Header oder Trailer (↑ 1) wie „Sign-Off“ (↑ 2) sind in der aktuellen Praxis in Projekten wie Git und Linux effektiv strukturierte Metadaten für das Commit. Diese werden alle an das Ende der Festschreibungsnachricht nach dem (unstrukturierten) Teil des Nachrichtentexts "freie Form" angehängt. Hierbei handelt es sich um Token-Wert- (oder Schlüssel-Wert- ) Paare, die normalerweise durch einen Doppelpunkt und ein Leerzeichen (
:␣
) begrenzt sind.Wie ich bereits erwähnt habe, ist „Abmelden“ nicht der einzige Trailer in der aktuellen Praxis. Siehe zum Beispiel dieses Commit , das mit „Dirty Cow“ zu tun hat:
Zusätzlich zu dem oben genannten "Sign-Off" -Anhänger gibt es:
Andere Projekte, wie zum Beispiel Gerrit, haben ihre eigenen Überschriften und die damit verbundene Bedeutung.
Sehen: https://git.wiki.kernel.org/index.php/CommitMessageConventions
Moral der Geschichte
Ich habe den Eindruck, dass, obwohl die anfängliche Motivation für diese bestimmten Metadaten einige rechtliche Probleme waren (nach den anderen Antworten zu urteilen), die Praxis solcher Metadaten über die bloße Behandlung des Falls der Bildung einer Kette von Autoren hinausgegangen ist.
[↑ 1]:
man git-interpret-trailers
[↑ 2]: Diese werden anscheinend auch manchmal als „Schluchzen“ (Initialen) bezeichnet.
quelle