|
|
| Zeile 27: |
Zeile 27: |
|
| |
|
| [[Bild:TB_ID_Einstellungen-5.png|800px|Ansicht mit Colored Diffs]] | | [[Bild:TB_ID_Einstellungen-5.png|800px|Ansicht mit Colored Diffs]] |
|
| |
| ==Patch(es) mit Git versenden==
| |
| Git kann ohne extra Aufruf eines Mailprogrammes Patches versenden. Dazu dient der Befehl <code>git send-email [Parameter]</code>. Dies ist sehr praktisch da man nicht extra einen Mailclient öffnen muss oder kann (z.B. wenn man Remote auf einem PC/Server arbeitet). Voraussetzung ist natürlich das der PC einen Zugang zum Internet hat. In größeren Projekten ist das der übliche Weg und einzig akzeptierte Weg um seine Veränderungsvorschläge zu publizieren.
| |
|
| |
| ===Paketabhängigkeiten===
| |
| <code>git send-email</code> benötigt zusätzliche Software die eventuell nicht automatisch durch die Paketverwaltungssoftware aufgelöst wird. Benötigt wird ein MTA ([http://de.wikipedia.org/wiki/Mail_Transfer_Agent Mail Transfer Agent]). Da stehen dann mehrere zur Auswahl (Postfix, Sendmail, Exim, ...). Benutzt den mit dem Ihr gegebenenfalls schon arbeitet oder installiert den favorisierten MTA nach.
| |
| <br style="clear:right;" />
| |
| <div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]] '''Debian:'''
| |
| Optional nachinstallieren falls nicht schon ein MTA installiert ist
| |
| <source lang="bash">
| |
| $ sudo apt-get install <Euer favorisierter MTA> # nur einen dieser installieren! sendmail, postfix oder exim
| |
| </source>
| |
| Zusätzlich müssen folgende Pakete nachinstalliert werden:
| |
| <source lang="bash">
| |
| $ sudo apt-get install git-email libnet-smtp-ssl-perl libauthen-sasl-perl\
| |
| libnet-perl libio-socket-ssl-perl libmime-tools-perl
| |
| </source>
| |
| </div>
| |
| <br style="clear:right;" />
| |
| <div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]] '''Suse:'''
| |
| <source lang="bash">
| |
| wenn jemand weiß was hier anzugeben ist ...
| |
| </source>
| |
| </div>
| |
|
| |
| ===manuelle Vorgehensweise===
| |
| Zum Testen oder gezielten Übergehen von Einstellungen kann man alle Parameter des Git Befehls von Hand angeben. Damit git einen oder mehrere Patches versenden kann müssen die Parameter für den E-Mail Versand angebenden werden.<br />
| |
| <code>git send-email</code>
| |
| # <code><Patch></code>
| |
| # <code>--from <Name></code> am besten mir Realname, Nickname ist nicht überall gerne gesehen (optional)
| |
| # <code>--to <E-Mail Adresse></code> Zieladresse, z.B. eine Mailingliste
| |
| # <code>--smtp-server <Server Adresse></code> die SMTP Serveradresse deines Providers
| |
| # <code>--smtp-server-port <Portadresse></code> der Zielport vom SMTP Server
| |
| # <code>--smtp-user <Benutzer></code> ohne @TLD!
| |
| # <code>--smpt-pass <Passwort></code> Dein Passwort bei Deinem Emailprovider
| |
| # <code>--smtp-encyption=<Encryption></code> in Kleinbuchstaben
| |
| Beispiel für GMail:
| |
| <source lang="bash">
| |
| $ git send-email 0001-ChangeLog-adding-entry.patch --to ml_neutron@projekt.com --from "Karl Klammer" \
| |
| --smtp-server smtp.gmail.com --smtp-server-port 587 --smtp-user karl.klammer \
| |
| --smtp-pass super_geheim --smtp-encryption=tls
| |
| </source>
| |
|
| |
| ===statische Einträge in der Konfigdatei von Git===
| |
| Man kann alles diese Angaben in die Konfigdatei <code>.git/config</code> eintragen. Damit minimiert sich der Aufruf des Git Befehls auf <code>git send-email <Patch></code>.
| |
| Wenn man Patche z.B. immer an die selbe Adresse verschickt (z.B. an eine Mailingliste) dann empfiehlt es sich die nötigen Parameter in die Konfigdatei des Projektes einzutragen.
| |
|
| |
| z.B. für GMail:
| |
| <source lang="bash">
| |
| [sendemail]
| |
| to = ml_neutron@projekt.com
| |
| from = "<Euer Name>"
| |
| smtpencryption = tls
| |
| smtpserver = smtp.gmail.com
| |
| smtpserverport = 587
| |
| smtpuser = <Benutzer> # alles vor @gmail.com , nicht die komplette E-Mailadresse!!!
| |
| smtppass = <Passwort>
| |
| confirm = never
| |
| </source>
| |
| und für T-Online:
| |
| <source lang="bash">
| |
| [sendemail]
| |
| to = ml_neutron@projekt.com
| |
| from = "<Euer Name>"
| |
| smtpserver = smtpmail.t-online.de
| |
| smtpserverport = 25
| |
| smtpuser = <Benutzer> # alles vor @t-online.de , nicht die komplette E-Mailadresse!!!
| |
| smtppass = <Passwort>
| |
| confirm = never
| |
| </source>
| |
|
| |
| ===Probleme===
| |
| Sollten Ihr beim Versenden per <code>git send-email</code> folgende Fehlermeldung erhalten:
| |
| <source lang="bash">
| |
| ...
| |
| X-Mailer: git-send-email 1.7.2.5
| |
|
| |
| Result: 250 2.0.0 Message accepted.
| |
|
| |
| In git 1.7.0, the default has changed to --no-chain-reply-to
| |
| Set sendemail.chainreplyto configuration variable to true if
| |
| you want to keep --chain-reply-to as your default.
| |
| </source>
| |
| Dann könnt Ihr mit <code>git config sendemail.chainreplyto false</code> folgenden Eintrag zu <code>.git/config</code> hinzufügen.
| |
| <source lang="bash">
| |
| [sendemail]
| |
| ...
| |
| chainreplyto = false
| |
| ...
| |
| </source>
| |
| Damit weiß Git bei jedem Benutzen von <code>git send-email</code> das nicht "in Reply to" erfolgt. Dies ist immer dann der Fall wenn man einen Patch das erste Mal an einen Empfänger sendet. Das Gegenteil tritt natürlich dann ein wenn Ihr auf einen Patch mit einer anderen Version antwortet. Dies dürfte aber relativ selten vorkommen und kann dann wieder explizit beim Aufruf von <code>git send-email</code> mit <code>--chain-reply-to <ID/Betreff der Mail></code> angegeben werden.
| |
|
| |
| ===Tips===
| |
| * Bevor Ihr Patches an eine Mailingliste verschicken wollt prüft zuvor ob alles "perfekt" ist.
| |
| *: Je nach Größe der Teilnehmer auf einer Mailingliste kann es etwas anstrengend sein allen begreiflich zu machen das der oder die Patche doch nicht richtig waren. Dies könnt Ihr recht einfach prüfen indem Ihr eben nicht an die ML verschickt sondern an Euch selbst. Dazu kann man sich einen Alias einrichten der einem die viele Tipparbeit abnimmt.
| |
| * Jeder Patch sollte ein "signed-off" besitzen!
| |
| *: Damit kann man später immer noch herausfinden von wem der ursprüngliche Patch/Code/Gedanke war. Bedenkt das Git ein dezentrales Versionsverwaltungssystem ist und nicht jeder der etwas zu einem Projekt beitragen will muss automatisch CheckIn Berechtigungen zu einem Repository besitzen.
| |
| * Jeder weitergeleitete und schon geprüfte Patch sollte zusätzlich ein "signed-off-by-cc" beinhalten.
| |
| *: Damit wissen die Developer das dieser Patch schon geprüft ist und können diesen in der Regel direkt ins Repo commiten.
| |
| * Nur ein Patch pro Mail!
| |
| *: Sendet pro Mail nur einen Patch, dies erleichtert die Arbeit derer die diese Patche commiten. Wollt Ihr mehrere Patche versenden benutzt z.B. ein Shellscript was pro Patch <code>git send-email</code> aufruft. Einfacher ist jedoch der Parameter <code>--compose</code>. Mit diesem kann man eine "einleitende" Mail verfassen (dies ist aber auf der Kernelmailingliste z.B. verpönt, also vorher prüfen ob das erwünscht ist). Wenn Ihr mehrere Patche habt die thematisch zusammen gehören dann solltet Ihr diese dann damit kombinieren.
| |
| *: Ein Beispiel:
| |
| $ git send-email 000*.patch --compose
| |
| :: Es öffnet sich der verknüpfte Editor zum Arbeiten mit git. Zu sehen sind ein paar Erläuterungen und Hilfestellungen und das Grundgerüst für die erste Mail. (Hinweis: <span style="background-color:lightgreen"><Hier müsst Ihr was eintragen></span> <span style="background-color:lightblue"><Hier hat Git schon etwas eingetragen></span>)
| |
| 1 From <span style="background-color:lightblue"><Euer Name></span> # This line is ignored.
| |
| 2 GIT: Lines beginning in "GIT:" will be removed.
| |
| 3 GIT: Consider including an overall diffstat or table of contents
| |
| 4 GIT: for the patch you are writing.
| |
| 5 GIT:
| |
| 6 GIT: Clear the body content if you don't wish to send a summary.
| |
| 7 From: <span style="background-color:lightblue"><Euer Name></span>
| |
| 8 Subject: <span style="background-color:lightgreen"><Hier kommt der Betreff für die "einleitende" Mail hin></span>
| |
| 9 In-Reply-To:
| |
| 10
| |
| 11 GIT: <span style="background-color:lightblue">[PATCH 1/2] libcoolstream-mt: Modified BS to use the libcoolstream-mt</span>
| |
| 12 GIT: <span style="background-color:lightblue">[PATCH 2/2] beta-2.6.26.8-nevis: new drivers required by libcoolstream-mt</span>
| |
| 13 <span style="background-color:lightgreen"><hier kommt der Text der Mail hin></span>
| |
| 14 <span style="background-color:lightgreen"><es darf ruhig etwas ausführlicher erklärt werden um was es geht></span>
| |
| 15 <span style="background-color:lightgreen"> </span>
| |
| 16 <span style="background-color:lightgreen"><gerne auch mit mehreren Absätzen></span>
| |
|
| |
| ===Anderen Editor verwenden===
| |
| Falls man nicht den original verknüpften Editor verwenden will (vi ist auch nicht jedermanns Sache ;-)), kann man das auch ändern. Hier als Beispiel "gedit". Dafür wird nur ein config-Eintrag eingefügt.
| |
|
| |
| <source lang="bash">
| |
| git config --global core.editor "gedit"
| |
| </source>
| |
|
| |
|
| ==Quellen== | | ==Quellen== |
| Zeile 160: |
Zeile 33: |
| * [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugin "Toggle Wrap Words" für TB ID SM] | | * [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugin "Toggle Wrap Words" für TB ID SM] |
| * [https://addons.mozilla.org/de/thunderbird/addon/colored-diffs/ Mozilla Plugin "Colored Diffs" für TB ID SM] | | * [https://addons.mozilla.org/de/thunderbird/addon/colored-diffs/ Mozilla Plugin "Colored Diffs" für TB ID SM] |
| * [https://git.wiki.kernel.org/index.php/GitTips#Using_gmail_to_send_your_patches GMail Einstellung für git-send-patch]
| |
| * [http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html git-send-email Doku auf kernel.org]
| |
| * [http://linux.yyz.us/patch-format.html Mail-/Patchformat für das Übersenden eines Patches an die Kernel Mailingliste]
| |
Thunderbird/Icedove für Git und Mailinglisten anpassen
Thunderbird bzw. Icedove sind in der default Einstellung nicht wirklich dazu geeignet um Mails an Mailinglisten zu versenden. Dies hat seinen Grund darin wie der Textinhalt der Mail gestaltet wird.
Auf OSS Mailinglisten werden Mails wegen der besseren Lesbarkeit im Textformat mit einem Umbruch am 72. Zeichen erwartet. Nur wenige MLs wandeln die Mails vor dem Versand um. In der Grundeinstellung versendet TB/ID aber Mails im HTML Format. Diese und die anderen Eigenschaften kann man aber anpassen.
Umstellen auf "nur Text"
Dies lässt sich Erreichen in dem geprüft wird ob in den Konteneinstellungen unter "Verfassen & Adressieren" kein Haken bei "Nachricht im HTML-Format verfassen" gesetzt ist.
Umstellen des Textflusses
Ebenfalls benutzt per default TB/ID "fliesenden Text". Dies lässt sich in den erweiterten Eigenschaften verändern.
Dazu muss in den Einstellungen vom Program (Unter Windows unter "Extras - Einstellungen", unter Linux unter "Bearbeiten - Einstellungen" zu finden) im Fenster "Erweitert" Reiter "Allgemein" der Button "Konfiguration" geöffnet werden.
In den erweiterten Einstellungen muss der Eintrag "mailnews.send_plaintext_flowed" gesucht und auf "false" gestellt werden. Dies geschiet durch einen Doppelklick auf diese Zeile.
optionales Installieren Plugin "Toggle Word Wrap"
Wenn man zwischen dem Fließtext und umgebrochenen Text wechseln muss oder will kann man sich das Plugin "Toggle Word Wrap" von Mozilla Plugins installieren. Damit kann man dann bequem zwischen beiden Textflussarten umschalten.
optionales Installieren Plugin "Colored Diffs"
Um Diffs bzw. Patches für das menschliche Auge lesbarer darzustellen kann man sich das Plugin "Colored Diffs" von Mozilla Plugins nach installieren. Damit werden Diffs auf Wunsch ähnlich dargestellt wie man das vom Git Webfrontend, Trac, ViewCS oder WebSVN kennt.
Quellen