Was ist die erste Zeile der Git-Format-Patch-Ausgabe?

Lesezeit: 5 Minuten

Wenn Sie git format-patch ausführen, besteht die Absicht darin, eine E-Mail-Darstellung des von Ihnen geschriebenen Codes zu erstellen. So weit, ist es gut. Ich bin kein E-Mail-Experte, aber es scheint mir, dass die erste Zeile dieser Format-Patch-Ausgabe nicht in einem Standard-E-Mail-Header-Format vorliegt …

From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001
Message-Id: 
From: Christopher Harvey 
Date: Wed, 3 Apr 2013 10:17:52 -0400
Subject: [PATCH 0/3] *** SUBJECT HERE ***
To: Christopher Harvey 

*** BLURB HERE ***

Christopher Harvey (3):
  commit 2
  commit 3
  commit 4

 data | 3 +++
 1 file changed, 3 insertions(+)

-- 
1.7.12.4

was ist From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001? wofür ist das datum Es sieht für mich willkürlich aus und hindert mich auch daran, es an sendmail weiterzuleiten. Ich muss diese Zeile jedes Mal manuell entfernen, wenn ich einen Patch senden möchte.

Danke.

  • git log -S 'Mon Sep 17 00:00:00 2001' --all -p --source --reverse -- . ':(exclude)t' zeigt, dass es Hamano war, der den Commit gemacht hat, der das magische Datum eingeführt hat, aber es sagt nichts darüber aus, warum das gewählt wurde. Der UNIX-Zeitstempel scheint auch keine besondere Zahl zu sein: 1000677600obwohl es ordentlicher ist als die Zeichenfolge.

    – Ciro Santilli Путлер Капут 六四事

    25. Juli 2015 um 9:02 Uhr

  • Auch der SHA-1 ist der des Commit, aber er ist etwas nutzlos, da sich der SHA-1 ändert, sobald er mit einem neuen Committer und einem übergeordneten Commit angewendet wird.

    – Ciro Santilli Путлер Капут 六四事

    25. Juli 2015 um 9:10 Uhr

Aus git help format-patch

DISKUSSION Der von git format-patch erzeugte Patch ist im UNIX-Postfachformat mit einem festen „magischen“ Zeitstempel, um anzuzeigen, dass die Datei von format-patch und nicht von einem echten Postfach ausgegeben wird, etwa so:

       From 8f72bad1baf19a53459661343e21d6491c3908d3 Mon Sep 17 00:00:00 2001
       From: Tony Luck <[email protected]>
       Date: Tue, 13 Jul 2010 11:42:54 -0700
       Subject: [PATCH] =?UTF-8?q?> > [IA64]=20Put=20ia64=20config=20files=20on=20the=20?=
        =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?=
       MIME-Version: 1.0
       Content-Type: text/plain; charset=UTF-8
       Content-Transfer-Encoding: 8bit

  • Es könnte nützlich sein, darauf hinzuweisen, dass die erste Version des Linux-Kernels am 17. September (aber 1991) von Linux Torvalds veröffentlicht wurde.

    – Sidcha

    18. April 2021 um 13:32 Uhr

Benutzer-Avatar
TachyonVortex

Als Anhang zu Fredriks Antwort sind hier einige relevante Kommentare von Junio ​​Hamano:

"Mon Sep 17 00:00:00 2001" ist nur ein falsches Zufallsdatum, um die Unix-From-Zeile allgemein erkennbar zu machen MUA und hat nichts mit Ihren Commit-Objekten zu tun. Das eigentliche Datum steht an Date: Header.

Ich habe tatsächlich einmal versucht, es in Gits Geburtstag zu ändern (Thu Apr 7 15:13:13 2005 -0700) und ich erinnere mich, dass sich herausstellte, dass die Skripte einiger Leute (oder vielleicht MUA) kaputt waren und sich darum kümmerten, was vor “7” war … in der Unix-From-Zeile und dieses Update verwarfen.

Das "From $SHA1 $magic_timestamp" Zeile und andere Kopfzeilen sind da, um es wie eine aussehen zu lassen mbox

Verbindungen: 1, 2, 3.

  • +1 für das Hamano-Zitat. Aber ich wünschte, jemand würde erklären, warum das magisches Datum gewählt wurde, oder ob es nur zufällig war.

    – Ciro Santilli Путлер Капут 六四事

    24. Juli 2015 um 16:17 Uhr

  • « Es stellte sich heraus, dass die Skripte einiger Leute (oder vielleicht MUA) kaputt waren und sich darum kümmerten, was vor “7” war » — Basierend auf dem von Ihnen angegebenen Datum haben Sie das mbox-Format verletzt, in dem das Datum stehen sollte Standard-C-Asctime-Format. Das Feld „Tag des Monats“ ist eine mit Leerzeichen gefüllte, rechtsbündige zweistellige Zahl (%2d), wodurch es für einen einstelligen Tag zwei Leerzeichen zwischen Month und Day gibt. Sehen MBOX-E-Mail-Format und Aufstiegszeit als Referenz.

    – Thomas Guyot-Sionnest

    29. Juli 2021 um 19:46 Uhr

  • „Ich erinnere mich, dass sich herausstellte, dass die Skripte einiger Leute (oder vielleicht MUA) kaputt waren und sich darum kümmerten, was vor „7“ war – Welche „7“? Die erste „7“ oder die zweite?

    – Fluss

    31. Oktober 2021 um 9:32 Uhr

Benutzer-Avatar
GoZoner

Die Ausgabe erfolgt im mbox-Format. Sie können die erste Zeile einfach entfernen mit:

git format-patch --stdout <range> | sed 1d

und dann machen Sie mit dem Ergebnis, was Sie wollen.

Alternativ können Sie verwenden git selbst, um die E-Mail zu senden. Versuchen:

git send-mail --smtp-server=<your server> *.patch

Sehen GIT Send-Mail-Manpage für alle Optionen.

Git 2.32 (Q2 2021) erklärt tatsächlich Teile der Format-Patch-Ausgabe im Voraus, bevor der Rest der Dokumentation beginnt, sich darauf zu beziehen.

Sehen 28e29ee begehen (24. März 2021) von Junio ​​C Hamano (gitster).
(Zusammengeführt von Junio ​​C. Hamano — gitster in 5c2f7ff begehen30. März 2021)

format-patch: Geben Sie einen Überblick darüber, was eine “Patch”-Nachricht ist

Der Text besagt, dass etwas, das als “Patch” bezeichnet wird, für jeden Commit vorbereitet wird, es für die Übermittlung per E-Mail geeignet ist und “am” der Befehl ist, es zu verwenden, sagt aber nicht, was der “Patch” wirklich ist.

Die Beschreibung auf der Seite bezieht sich auch auf die “Drei-Strich”-Linie, aber es ist unklar, was es ist, es sei denn, der Leser erhält einen detaillierteren Überblick darüber, was der “Patch” ist.

Fügen Sie einen kurzen Absatz hinzu, um einen Überblick darüber zu geben, wie die Ausgabe aussieht.

git format-patch schließt jetzt in seine ein Manpage:

Bereiten Sie jeden Commit mit seinem „Patch“ in einer „Nachricht“ pro Commit vor, die so formatiert ist, dass sie einem UNIX-Postfach ähnelt.

Eine vom Befehl generierte „Nachricht“ besteht aus drei Teilen:

  • Ein kurzer Metadaten-Header, der mit beginnt From <commit>
    mit fest Mon Sep 17 00:00:00 2001 datestamp, um Programmen wie “file(1)” dabei zu helfen, zu erkennen, dass die Datei eine Ausgabe dieses Befehls ist, Felder, die die Identität des Autors, das Datum des Autors und den Titel der Änderung (entnommen aus dem ersten Absatz des Commit-Protokolls Botschaft).

  • Der zweite und die folgenden Absätze der Commit-Protokollnachricht.

  • Der “Patch”, das ist der “diff -p --stat” Ausgabe (vgl
    git diff) zwischen dem Commit und seinem übergeordneten Element.

Die Protokollnachricht und der Patch sind durch eine Linie mit drei Strichen getrennt.

aus wikipedia (https://en.wikipedia.org/wiki/September_17)

2001 – Die New Yorker Börse wird nach den Anschlägen vom 11. September, der längsten Schließung seit der Weltwirtschaftskrise, wieder für den Handel geöffnet.

vielleicht nur zufall!

1245910cookie-checkWas ist die erste Zeile der Git-Format-Patch-Ausgabe?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy