Was ist der Sinn der Abmeldefunktion in Git ? ?
git commit --signoff
Wann sollte ich es verwenden, wenn überhaupt?
Was ist der Sinn der Abmeldefunktion in Git ? ?
git commit --signoff
Wann sollte ich es verwenden, wenn überhaupt?
Antworten:
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.
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:
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>
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.
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>
[Project Maintainer: Renamed test methods according to naming convention.]
Signed-off-by: Project Maintainer <project.maintainer@example.com>
Quelle: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
author
Bereich eines Git-Commits? Ich dachte immer , das ist , warum es ein separates war author
und committer
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:
-s::
--signoff::
Fügen Sie
Signed-off-by
am Ende der Commit-Protokollnachricht eine Zeile des Committers hinzu.
Die Bedeutung einer Abmeldung hängt vom Projekt ab, bestätigt jedoch in der Regel, dass der Committer das Recht hat, diese Arbeit unter derselben Lizenz einzureichen, und stimmt einem Entwickler-Ursprungszeugnis zu ( weitere Informationen finden Sie unter https://developercertificate.org ).
Erweitern Sie die Beschreibung der Dokumentation
--signoff
Ändern Sie verschiedene Dokumentdateien (Manpage), um detaillierter zu erklären, was
--signoff
bedeutet.Dies wurde inspiriert von " lwn article 'Bottomley: Ein bescheidener Vorschlag zum DCO' " (Developer Certificate of Origin), in dem Paulj feststellte:
Das Problem, das ich mit DCO habe, ist, dass das Hinzufügen eines "
-s
" - Arguments zu git commit nicht wirklich bedeutet, dass Sie überhaupt von DCO gehört haben ( diegit commit
Manpage erwähnt den DCO nirgendwo ), tatsächlich gesehen haben.Wie kann das Vorhandensein von "
signed-off-by
" in irgendeiner Weise bedeuten, dass der Absender dem DCO zustimmt und sich dazu verpflichtet? In Kombination mit der Tatsache habe ich Antworten auf Listen auf Patches ohne SOBs gesehen, die nichts weiter sagen als "Senden Sie dies erneut mitsigned-off-by
damit ich es kann".Durch das Erweitern der Dokumentation von git wird es einfacher zu argumentieren, dass Entwickler verstanden haben,
--signoff
wann sie es verwenden.
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)
pull
: Weitergabe--signoff/--no-signoff
an "git merge
"Zusammenführen kann dauern
--signoff
, aber ohne Pull---signoff
Down- Passing ist es unpraktisch zu verwenden; Erlaube 'pull
', die Option zu übernehmen und durchzuleiten.
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:
mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
This is an ancient bug that was actually attempted to be fixed once
(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
get_user_pages() race for write access") but that was then undone due to
problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
In the meantime, the s390 situation has long been fixed, and we can now
fix it by checking the pte_dirty() bit properly (and do it better). The
s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
software dirty bits") which made it into v3.9. Earlier kernels will
have to look at the page state itself.
Also, the VM has become more scalable, and what used a purely
theoretical race back then has become easier to trigger.
To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
we already did a COW" rather than play racy games with FOLL_WRITE that
is very fundamental, and then use the pte dirty flag to validate that
the FOLL_COW flag is still valid.
Reported-and-tested-by: Phil "not Paul" Oester <kernel@linuxace.com>
Acked-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Michal Hocko <mhocko@suse.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Willy Tarreau <w@1wt.eu>
Cc: Nick Piggin <npiggin@gmail.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
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
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.
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 ).