-コミットのやり方

今まで私はリポジトリは開発中のコーディングの保存トランザクションのように捉えていて、小刻みにコミットするし、コミットする際は特にコミットコメントもつけずにソースツリーのルートで一発全コミットでした。まあ、基本的に一人でやってるときはそれでよかったんですが、コミッタも増えてくるとリポジトリのより有効な使い方というのもあるようで、コミットのやり方をすこし変えてみるとそれがコミュニケーションの向上へも寄与するみたい。OSSなら(ほとんどいないとは思いますが)リポジトリの差分を常に見てる人もいるかもしれないしね。
Ikushipeで新しく増やしたコミッタであるsasakichi氏が作業結果をコミットする際に、なにやら自分で更新したソースを眺めてちょこちょこ選択してはグループごとにコメント書いてコミットしているのです。後ろでそれをみていて、そうか、これかと。誰かこういうことを教えてくれるんですかね、私は教えるどころか殿様プログラマーだから自由奔放にルート一発ノーコメントでコミットしてましたが。。。リポジトリに使い方というのは実は結構大事なんじゃないかなと。いまさらですが、誰も教えてくれなかったことを恨むw。「コミットコメントを書いて〜」なんて言われたりもしましたが、どう書けっちゅうねん。おりゃ手が早いし機能毎に書くなんてことせずにひらめいたことをそのまま形にしているだけなんだよ、天才だから(爆笑)というぐらいの気持ちだったわけですね。いや深く恥じる。
まあ、言っとくと「コミットコメント書いて」というのも「JavaDoc書いて」というのもクソみたいな要望で、そんなこと言われても自称天才達は何もせんよ。そこにチームコラボレートの妙味でこういうメリットがある、ということが琴線に触れないと。IDEの変更比較を見る機能で逐一私の変更を追ってる姿を見て、大量に書いては変更される履歴に喰らいついてきつつもその自由奔放さに舌打ちされちゃってるのを後ろ通りかかってみちゃった日にゃ。。。まあ、そんなもんだ(スマン、偉そうだった?)。なまじ書いていたJavaDocのウソコメント(はじめは真実だったが開発変更繰り返すうちに古くなっちゃったもの)を信じて明後日の方向にいっちゃったりするのを見ると、コメントも注意深くメンテしないといけないね、という気になる。今後、Ikushipeのリポジトリはコミットコメントなるべくつけるように少しづつ努力します。テクニック的には結構面白いことをやってるのでスナップショットでも見てもらったらいいと思うのだけど、経過も大事なんだろうね。
以上のようなことを、昨日、顧客リリースの念のため待機で休日出勤してもらってた連中と夕飯食ってるときに話したら、そんな傍若無人な王者は私だけだったそうだwwww。

  • 手元でコード書くのはそれこそ自由奔放にひらめきのままやる
  • コミットするときに、ひと手間いれる
    • 変更ソースの一覧を眺め、機能グループ毎にまとめてコミット。これを何度か繰り返す。たぶん3回もやれば全部コミットできるでしょう。
    • その際、グループ分けした理由たる、機能や作業内容の違いをコメント書き
    • コメントも、単に「リファクタ」とか「Doc追加」とかじゃなく、読んで体温伝わるようなものがいいかも。「クラス名***がどうもしっくりこないので***に変更してみた。が、まだ直感的ではない」とかね。1行だけ書くにしても、まあユーモアやアイディアの片鱗みせるぐらいのことはできる。

一方でだからといって困るのは、なかなかコミットしない人とか、コミット漏れていてリポジトリ単体でコンパイル通らないようにしちゃう人。

  • コミットはこまめなぐらいのほうが、そうは言ってもいいと思う。
  • コミットするときは、手元のもの全部コミットできるとなおよい。そうでなくとも、リポジトリは基本的に動いてるものは動くように、コンパイルできていたものはコンパイルできるように保つ。

たぶん全部ごくあたりまえのことなんだろうけど、私は教わったことはなかったです。