Vorige: Git einrichten, Nach oben: Einreichen von Patches [Inhalt][Index]
Der Befehl git send-email
ist die beste Art, wie Sie sowohl
einzelne Patches als auch Patch-Reihen (siehe Mehrere Patches) an die
Guix-Mailing-Liste schicken können. Würden Sie Patches als E-Mail-Anhänge
schicken, wäre es in manchen Mailprogrammen umständlich, diese zu
überprüfen. Und wenn Sie aus git diff
kopierten, würden die
Metadaten des Commits fehlen.
Anmerkung: Der Befehl
git send-email
ist in der Ausgabe namenssend-email
desgit
-Pakets enthalten, alsogit:send-email
.
Mit dem folgenden Befehl erzeugen Sie eine E-Mail mit dem Patch aus dem neuesten Commit, öffnen diese in Ihrem gewählten EDITOR oder VISUAL, um sie zu bearbeiten, und schicken sie an die Guix-Mailing-Liste, damit jemand sie überprüft und merget. Vorausgesetzt Sie haben Git bereits so eingerichtet wie in Abschnitt Git einrichten beschrieben, können Sie einfach dies benutzen:
$ git send-email --annotate -1
Tipp: Wenn Sie in der Betreffzeile zu Ihrem Patch ein zusätzliches Präfix mitgeben möchten, können Sie die Befehlszeilenoption --subject-prefix benutzen. Beim Guix-Projekt wird so angegeben, dass der Patch für einen bestimmten Branch oder ein anderes Repository bestimmt ist, statt für den
master
-Branch von https://git.savannah.gnu.org/cgit/guix.git.git send-email --annotate --subject-prefix='PATCH core-updates' -1
In der Patch-E-Mail finden Sie eine Trennlinie aus drei Bindestrichen unter der Commit-Nachricht. Sie dürfen erklärende Bemerkungen zum Patch unterhalb dieser Linie anbringen. Wenn Sie keine solchen Annotationen in der E-Mail schreiben möchten, können Sie oben auf die Befehlszeilenoption --annotate verzichten.
Wenn Sie einen überarbeiteten Patch schicken müssen, geht das anders. Machen
Sie es nicht so und schicken Sie keinen Patch mit einem „Fix“,
der als Nächstes angewandt werden müsste, sondern verwenden Sie stattdessen
git commit --amend
oder git
rebase
, um den alten Commit zu verändern, und schicken den an die Adresse
FEHLERNUMMER@debbugs.gnu.org, wobei Sie außerdem die
Befehlszeilenoption -v von git send-email
angeben.
$ git commit --amend $ git send-email --annotate -vREVISION \ --to=FEHLERNUMMER@debbugs.gnu.org -1
Anmerkung: Offenbar gibt es einen Fehler in
git send-email
, wodurch Sie nicht -v REVISION (mit einem Leerzeichen) schreiben dürfen; lediglich -vREVISION funktioniert.
Die FEHLERNUMMER finden Sie heraus, indem Sie entweder auf der Mumi-Oberfläche auf https://issues.guix.gnu.org nach dem Namen Ihres Patches suchen oder indem Sie in Ihren E-Mails auf die Eingangsbestätigung schauen, die Debbugs Ihnen automatisch als Antwort auf eingehende Fehlerberichte (Bugs) und Patches hat zukommen lassen. Darin finden Sie die Fehlernummer.
Wenn Ihr Git-Ckeckout richtig eingerichtet ist (siehe Git einrichten), wird der Befehl git send-email
automatisch die Mitglieder
des zuständigen Teams benachrichtigen. Dazu analysiert das Skript
etc/teams.scm Ihre Änderungen. Sie können es auch selbst aufrufen,
wenn Sie den zum Einreichen von Patches bevorzugten Befehl git
send-email
meiden. Um die verfügbaren Aktionen für dieses Skript zu lesen,
können Sie es mit dem Befehl etc/teams.scm help
aufrufen. Für
weitere Informationen über Teams siehe den Abschnitt Teams.
Anmerkung: Auf Fremddistributionen müssen Sie vielleicht stattdessen
./pre-inst-env git send-email
aufrufen, damit Sie etc/teams.scm benutzen können.
Obwohl git send-email
allein für einen einzelnen Patch genügt,
führt eine Unzulänglichkeit in Debbugs dazu, dass Sie beim Versenden
mehrerer Patches achtgeben müssen: Wenn Sie alle auf einmal an die Adresse
guix-patches@gnu.org schicken würden, würde für jeden Patch jeweils
ein Fehlerbericht eröffnet!
Wenn Sie die Patches aber als Patch-Reihe abschicken wollen, sollten Sie als
Erstes mit Git ein „Deckblatt“ schicken, das den Gutachtern einen Überblick
über die Patch-Reihe gibt. Zum Beispiel können Sie ein Verzeichnis namens
ausgehend anlegen und darin sowohl Ihre Patch-Reihe als auch ein
Deckblatt namens 0000-cover-letter.patch platzieren, indem Sie
git format-patch
aufrufen.
$ git format-patch -NUMBER_COMMITS -o outgoing \ --cover-letter
Anmerkung:
git format-patch
accepts a wide range of revision range specifiers. For example, if you are working in a branch, you could select all commits in your branch starting atmaster
.$ git format-patch master..MY_BRANCH -o outgoing \ --cover-letter
Jetzt schicken Sie nur das Deckblatt an die Adresse guix-patches@gnu.org, so dass ein Fehlerbericht aufgemacht wird, an den wir dann die restlichen Patches schicken können.
$ git send-email ausgehend/0000-cover-letter.patch --annotate $ rm ausgehend/0000-cover-letter.patch # nicht nochmal schicken!
Passen Sie auf und bearbeiten die E-Mail nochmal, um ihr vor dem Abschicken eine angemessene Betreffzeile (Subject) und anstelle von Blurb Ihren Text mitzugeben. Sie werden bemerken, dass unterhalb des Textes automatisch ein Shortlog und Diffstat aufgelistet wurden.
Sobald Sie vom Debbugs-Mailer eine Antwort auf Ihre Deckblatt-E-Mail erhalten haben, können Sie die eigentlichen Patches an die neu erzeugte Adresse für diesen Fehlerbericht senden.
$ git send-email ausgehend/*.patch --to=FEHLERNUMMER@debbugs.gnu.org $ rm -rf ausgehend # wir sind damit fertig
Zum Glück können wir uns diesen Tanz mit git format-patch
danach
sparen, wenn wir eine überarbeitete Patch-Reihe schicken, weil wir die
Fehlernummer dann bereits haben.
$ git send-email -ANZAHL_COMMITS -vREVISION \ --to=FEHLERNUMMER@debbugs.gnu.org
Wenn nötig, können Sie mit --cover-letter --annotate auch dann ein weiteres Deckblatt mitschicken, z.B. um zu erklären, was die Änderungen seit der letzten Revision sind und warum sie nötig waren.
Vorige: Git einrichten, Nach oben: Einreichen von Patches [Inhalt][Index]