Wozu dient das Herunterfahren in git?

Was ist der Sinn der Exit- Funktion in Git ?

 git commit --signoff 

Wann sollte ich es verwenden, wenn überhaupt?

400
26 дек. Clark Gaebel am 26. Dezember eingestellt 2009-12-26 01:30 09 um 1:30 Uhr 2009-12-26 01:30 Uhr
@ 4 Antworten

Das Extrahieren ist eine Voraussetzung, um Fixes im Linux-Kernel und in mehreren anderen Projekten zu erhalten. Die meisten Projekte verwenden sie jedoch nicht.

Dies wurde nach der SCO-Klage (und anderen Vorwürfen wegen Verletzung des Urheberrechts durch die SCO , von denen die meisten sie nie vor Gericht akzeptiert haben) als Ursprungszeugnis der Entwickler eingeführt . Es wird verwendet, um zu bestätigen, dass Sie bestätigen, dass Sie das Update erstellt haben, oder dass Sie bestätigen, dass es, soweit Sie wissen, unter einer entsprechenden Open-Source-Lizenz erstellt wurde oder dass es Ihnen unter diesen Bedingungen von einer anderen Person zur Verfügung gestellt wurde. Dies kann dazu beitragen, eine Kette von Personen aufzubauen, die für den Copyright-Status dieses Codes verantwortlich sind, um sicherzustellen, dass Copyright-Code, der nicht unter der Lizenz für freie Software (Open Source) veröffentlicht wird, nicht im Kernel enthalten ist.

392
26 дек. Die Antwort wird von Brian Campbell am 26. Dezember gegeben. 2009-12-26 01:39 09 um 01:39 2009-12-26 01:39

Die Ausgabe ist die Zeichenfolge am Ende der Festschreibungsnachricht, die angibt, wer der Verfasser der Festschreibung ist. Sein Hauptziel ist es, die Nachverfolgung dessen zu verbessern, vor allem durch Korrekturen.

Beispiel:

 Made an update to xyz. Signed-off-by: Super Developer <super.dev@gmail.com> 

Es muss einen echten Benutzernamen enthalten, wenn es für ein Open Source-Projekt verwendet wird.

border=0

Wenn ein Zweigentwickler die Patches ein wenig ändern muss, um sie zusammenzuführen, kann er den Übermittler zur Wiederholung auffordern, dies ist jedoch kontraproduktiv. Er kann den Code korrigieren und am Ende setzen, damit der Autor noch einen Kredit für den Patch erhält und nicht für die eingegebenen Fehler.

 Made an update to xyz. Signed-off-by: Super Developer <super.dev@gmail.com> [uber.dev@gmail.com: renamed methods according to naming conventions.] Signed-off-by: Uber Developer <uber.dev@gmail.com> 

Quelle: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html

45
26 дек. Hoto antwortete auf 26 Dez 2012-12-26 20:36 '12 um 20:36 Uhr 2012-12-26 20:36

git 2.7.1 (Februar 2016) erklärt, dass David A. Wheeler (David david-a-wheeler ) in b2c150d (5. Januar 2016 ) verpflichtet ist .
(Kombiniert von Junio ​​C Hamano - gitster - in commit 7aae9ba , 5. Februar 2016

git commit Manpage von git commit enthält jetzt:

 -s:: --signoff:: 

Fügen Sie die am Ende der Commit-Protokollnachricht unterschriebene Signed-off-by Zeile des Commiters hinzu.
Der Abzeichnungswert hängt vom Projekt ab. In der Regel wird jedoch bestätigt, dass der Committer die Rechte zum Einreichen dieser Arbeit unter einer Lizenz besitzt und mit dem Origin-Entwicklerzertifikat einverstanden ist (weitere Informationen finden Sie unter http://developercertificate.org/ ).


Erweitern Sie die Dokumentation zu --signoff

Ändern Sie die verschiedenen Dokumente (Manpages), um die Bedeutung von --signoff genauer zu erläutern.

Dies wurde durch den " Artikel aus der Rebe" Bottomley inspiriert : ein bescheidener Vorschlag für DCO " (Origin Developer Certificate), auf den Paulus hinwies

Das Problem mit DCO ist, dass das Hinzufügen eines << 27> -Argements zu git commit dort nicht bedeutet, dass Sie überhaupt von DCO gehört haben ( t22> man erwähnt DCO nirgendwo ), egal was Sie sehen.

Wie also bedeutet das Vorhandensein von " Signed-off-by " in irgendeiner Weise, dass der Absender zustimmt und den DCO überträgt? In Verbindung mit der Tatsache sah ich die Antworten auf die Listen auf den Patches ohne SOB, die nicht mehr als "Senden Sie es mit Signed-off-by damit ich es tun kann" aussagen.

Das Erweitern der git-Dokumentation vereinfacht die Behauptung, die die Entwickler verstehen --signoff wenn sie es verwenden.


Bitte beachten Sie, dass diese Nachricht (für git 2.15.x / 2.16, Q1 2018) jetzt für git pull verfügbar ist.

Siehe Festschreiben 3a4d2c7 (12. Oktober 2017) W. Trevor King ( wking ) .
(die Fusion von Junio ​​S Hamano - gitster - im Commit fb4cd88 , 6. November 2017

pull : pass --signoff/--no-signoff für " git merge "

merge kann --signoff übernehmen, aber ohne nach unten zu --signoff ist es unbequem, --signoff zu verwenden; Erlaube ' pull ', die Option zu übernehmen und durchzugeben.

21
06 февр. Die Antwort wird vonC 06 Feb. gegeben. 2016-02-06 09:22 '16 um 09:22 Uhr 2016-02-06 09:22

Auf diese Frage gibt es einige gute Antworten. Ich versuche, noch eine weitere Antwort hinzuzufügen, nämlich welche Arten von Linien / Kopfzeilen / Anhängern in der heutigen Praxis sind. Nicht viel im Titel (es ist nicht der einzige).

Header oder Trailer (↑ 1) wie "shutdown" (↑ 2) sind in der aktuellen Praxis in Projekten wie Git und Linux effektiv strukturierte Metadaten für das Festschreiben. Alle werden am Ende der Festschreibungsnachricht nach dem "unformierten" Teil des Nachrichtentexts ("Freiform") hinzugefügt. Dies sind Token-Paare (oder Schlüsselwerte), die normalerweise auf einen Doppelpunkt und ein Leerzeichen ( :␣ ) beschränkt sind.

Wie bereits erwähnt, ist „Herunterfahren“ in der derzeitigen Praxis nicht der einzige Anhänger. Siehe zum Beispiel dieses Commit , das "Dirty Cow" zugeordnet ist:

  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> 

Neben dem Abnahme-Trailer im obigen Beispiel gibt es:

  • "Cc" (wurde über den Patch informiert)
  • "Acked-by" (vom Eigentümer des Codes bestätigt, "sieht gut aus")
  • "Verified" (angesehen)
  • "Gesendet und verifiziert" (Berichten zufolge und verifiziert das Problem (vermute ich))

Andere Projekte, wie zum Beispiel Gerrit, haben eigene Titel und damit verbundene Bedeutungen.

Siehe: https://git.wiki.kernel.org/index.php/CommitMessageConventions

Moral der Geschichte

Ich hatte den Eindruck, dass, obwohl die ursprüngliche Motivation für diese spezifischen Metadaten einige rechtliche Fragen waren (nach anderen Antworten zu urteilen), die Praxis solcher Metadaten im Fall der Bildung der Kette des Autors fortgeschritten war.

[↑ 1]: man git-interpret-trailers
[↑ 2]: Sie werden manchmal auch "Schluchzer" (Initialen) genannt.

3
15 дек. Die Antwort gibt Guildenstern am 15. Dezember. 2016-12-15 16:06 '16 am 16:06 2016-12-15 16:06

Weitere Fragen zu Tags oder Frage stellen