gitで対話的に本家リポジトリ所有者にメールを送るスクリプト

git cloneしておれおれパッチを書いた後に、本家のリポジトリへメールするのにいちいち「「git-format-patch origin」してから「git-send-email --smtp-server ほにゃらら --from めーる --to 相手のメール 0*.patch」して「rm 0*.patch」するのが面倒だ。darcsだったらdarcs sendでinteractiveにいけるのに…
しかもoriginリポジトリ所有者のメールアドレスって記憶されてないみたいね….git以下をgrepしても見つからんorz というわけでgit config remote.origin.emailに記憶させる。

というわけで、「git-format-patch origin」してからメールするパッチを対話的に選択して「git-send-email」してパッチを消すスクリプトを作成してみた。俺はまだgit初心者なのでgit的に正しいかどうかは知らん。

http://www.rubyist.net/~rubikitch/archive/git-send.rb

からもってけ!

ただし使う前には、 ~/.git-send.rb に

$GIT_SEND_EMAIL_OPTIONS = "--smtp-server mail.your.smtp --from your@mail.address "

のようにSMTP鯖とメールを指定する必要がある。設定ファイルがYAMLじゃないのは俺が怠惰だから:-)

実行結果はこんな感じ。

$ git-send.rb
git-format-patch origin
0001-Old-.rubyforge-config.yml-exist-check.patch
0002-Old-.rubyforge-config.yml-exist-check.-exit.patch
0003-s-RubyForge-RubyForge-g.patch
0004-Added-RubyForge-package_id-check.patch
0005-Pass-a-version-string-not-Gem-Version-to-RubyForg.patch
(ここで送るパッチかどうか聞いてくる)
Send 0005-Pass-a-version-string-not-Gem-Version-to-RubyForg.patch? (y/n) y
Send 0001-Old-.rubyforge-config.yml-exist-check.patch? (y/n) n
Send 0002-Old-.rubyforge-config.yml-exist-check.-exit.patch? (y/n) n
Send 0003-s-RubyForge-RubyForge-g.patch? (y/n) n
Send 0004-Added-RubyForge-package_id-check.patch? (y/n) n
(試運転)
git-send-email --smtp-server mail.your.smtp --from your@mail.address  --to repository@owner.jp --dry-run 0005-Pass-a-version-string-not-Gem-Version-to-RubyForg.patch
0005-Pass-a-version-string-not-Gem-Version-to-RubyForg.patch
(mbox) Adding cc: rubikitch <your@mail.address> from line 'From: rubikitch <your@mail.address>'
Dry-OK. Log says:
Server: mail.your.smtp
MAIL FROM:<your@mail.address>
RCPT TO:<repository@owner.jp>,<your@mail.address>
From: your@mail.address
To: repository@owner.jp
Cc: rubikitch <your@mail.address>
Subject: [PATCH] Pass a version string (not Gem::Version) to RubyForge#add_release.
Date: Sun,  1 Feb 2009 02:20:41 +0900
Message-Id: <1233422441-9285-1-git-send-email-your@mail.address>
X-Mailer: git-send-email 1.5.6.5

Result: OK
(送るパッチを表示・再確認)
0005-Pass-a-version-string-not-Gem-Version-to-RubyForg.patch
---- Press return to send -----
(以後実際に送信・蒔き散らかした*.patchの掃除)