gitのパッチをGmailに保存する

git format-patchで作ったパッチ(というかメール)をどうやって送るのか考えていたところ、以下のサイトに行きつきました。
http://progit.org/book/ja/ch5-2.html
しかしながら、このサイトの内容は(たぶん)少し古いものでした。
git send-emailを用いてGmailに保存すると書かれていますが、この方法ではimapプロトコルで保存することはできません。

さまざまなメールソフトでの詳細なメール送信方法が、Git ソースコードにある Documentation/SubmittingPatches の最後に載っています。

早速原文を見てみると、以下のようになっていました。

To submit using the IMAP interface, first, edit your ~/.gitconfig to specify your
account settings:

[imap]
folder = "[Gmail]/Drafts"
host = imaps://imap.gmail.com
user = user@gmail.com
pass = p4ssw0rd
port = 993
sslverify = false

You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error
that the "Folder doesn't exist".

Once your commits are ready to be sent to the mailing list, run the
following commands:

$ git format-patch --cover-letter -M --stdout origin/master | git imap-send

「ルークよ、git imap-sendコマンドを使え。ドキュメントに完全には頼るな。パスワードを保存せずとも実行出来る。」
上記の引用のうち、「pass = p4ssw0rd」を削除しておくと、送信時にパスワード入力のダイアログが表示され、コンピュータ上に保存せずにすむ。
こうして、無事Gmailに保存することができたのだった。


ただし、オビ=ワンは次のようにも遺している。

Just make sure to disable line wrapping in the email client (GMail web
interface will line wrap no matter what, so you need to use a real
IMAP client).

「line wrap」というのはよくわからなかったが、Gmailは経験上、行頭のスペースを送信時にすべて一掃してしまうはずだ。これを防ぐには、IMAPクライアントを利用する必要がありそうだ。


DebianUbuntuSSLを用いてGmailに保存するためには、SSLを有効にしてgit-coreパッケージをビルドしなおす必要があります。詳しくは以下の記事を参照してください。
Ubuntuのgit関連パッケージが、DebianとOpenSSLとのライセンス関係で、SSL非対応な件+Ubuntuでパッケージをビルド - yuya_prestoの日記


追記:Thunderbirdだと、自動改行をとめないとパッチがガラクタになってしまいます。次のリンクを参考に無効にしましょう。「教えて!Ziddyちゃん」サービス終了およびサービス移行のご案内


追記その2:書き忘れていましたが、git commitの際のメッセージの1行目が件名に、それ以外が本文になるようです。これを考えた上でコミットメッセージを書くべきですね。