creating patch on git

この entry は見づらい上にまぎらわしいのでたぶん参考になりません。 http://d.hatena.ne.jp/janus_wel/20090210/1234441680http://d.hatena.ne.jp/janus_wel/20090211/1234442344 にまとめ直しましたので参照してください。

どうも git は patch 管理にも配慮が行き届いているらしく。以下の手順で patch を作る。変更して format-patch すればおkというわけではなくて事前に commit が必要というのが注意点。

  1. git pull もしくは git clone git://example.com/sample-project.git して最新を取ってくる。この方が面倒が少ない。
  2. 変更する。事前に変更した file を copy するとかが楽。
  3. git commit -a -m 'add new feature' わかりやすい名前をつけて local repository に commit 。
  4. git format-patch origin/master と打つと "0001-add-new-feature.patch" という file ができている。

で、これを remote に適用してもらうために project mailing list に送るには git send-email --to sample-project@example.com 0001-add-new-feature.path とするらしい。けどこの方法は reply には使えないよな… ? そういう場合は普通に添付しておくりゃいいんだろうか ?

git send-email --annotate --to sample-project@example.com 0001-add-new-feature.patch として注釈を添えて送るのが礼儀というか、いきなり patch だけ送られても先方が困るだけだと思うのでこうすべき。あと「何か」の返信として patch を送るには --in-reply-to オプションで「何か」の header の in-reply-to の値を指定するといいらしい ? ( まだ試してない )

git send-email を使うには git-email package が必要なので、事前に root で apt-get install git-email して install しておく。

"Can't call method "mail" on an undefined value at /usr/bin/git-send-email line 507." とか言われて送れない。中身 Perl で Net::SMTP 使ってるみたいなんだけどちゃんと module あるし help ( http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html ) に初期設定とか書いてないしで心が折れた。

http://d.hatena.ne.jp/janus_wel/20090120/1232481948Gmail で patch を送るための設定を書いたのでそっちを参照。