私は常習的なコミッターであり、それが私に合っていることを発見しましたが、確かに私のコミットメッセージはほとんどいつものように、
Age: 9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.
したがって、私のブランチ(mercurial)にこのような頻繁で習慣的なコミットを行ったことで、最も詳細なコミットログが正確に推奨されたとは言えません。たとえば、妻が夕食に出かけるように頼んだら、途中でコードをコミットすることもあります。その時点で、前の「Working on [...]」コミットメッセージを急いでコピーして使用します。
私のコミットログパターンは通常、次のようなものです。 "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"
逆に言えば、それは私の尻を救った。予期せずにテストしなかったエッジケースに遭遇することもありますが、この時点で頻繁にコミットすることで、間違いをどこで引き起こしたかを正確に把握できます。
そのため、私は最良の習慣については知りませんし、理想的なコミットロギングの習慣については耳を傾ける人ではありませんが、より頻繁にコミットすることは、回帰を実行する必要がある場合に確実に役立つと言うことができます。
1行の変更ごとにコミットを取得する必要がありますか?
私は以前に1行の変更をコミットしましたが、通常は注意が必要な変更であり、時間が足りなかったのかもしれません。私のコミットは、常に完全で完全な作業単位や変更に似ているとは限りません。言ったように、時々彼らは私の妻が予期せず夕食に出かけるように頼んだ結果です。
TBHその"Working on [...]"
ログパターンに従う私のコミットの多くは、一貫した変化の単位をモデリングしていません(なぜ私はしばしばより良いメッセージを思い付かないことができます"Working on [...]"
)が、私が一杯のコーヒーを作るような息抜きをしただけの結果です。この"Completed [...]"
メッセージは、その作業単位の終了を示しています。そこで"Started working on [...]"
、何か作業を始めたばかりのときに、最初のタイプのメッセージとともに、より詳細なメッセージを書くことがよくあります。15分ごとに1回のようにコミットを平均すると、「Working on [...]」メッセージは、誰かがより詳細なメッセージを含む1つのより大きなコミットでコミットする可能性のある中間者に似ています。
テストの前にコミットする必要があります(たとえば、少なくとも構文/コンパイルエラーのためにコミットしてから、完全に元に戻す必要があります。アイデアが機能しなかった、またはメッセージが嘘であるため)。
時々テストを実行する前に、先に進んでコミットします(予期しないイベントがあった場合)。また、私は一人ですが、CIを実行するサーバー(ここではLAN上で自宅で実行されているサーバーのみ)にプッシュします。それはやり過ぎのように思えるかもしれませんが、私は以前の職場でそれに頼るのに慣れました。さらに、毎回、すべてのユニットテストと統合テストを手作業で実行する必要はありません。私はそれをすべて押すだけに結びつけているのが好きです。テストが失敗した場合、リグレッションを行い、最新のリビジョンの間違いを修正し、先へ進むことで前進する方法で作業するのは十分簡単です。ただし、コミットする前に、少なくともデバッグビルドに対してコードをビルドします。
まだ新鮮なうちに夕食の仕事をやめる前に、毎朝/午後に必ずコミットする必要がありますか?
私は外出する前にコミットし、プログラミングを中断するのが好きです。この質問に出くわすまで、私は実際にその理由をあまり考えませんでした。コミットログなしで中断した場所をピックアップするのを防ぐために、中断した場所の代わりに、diffなどを実行できるようにします。うーん、コミットする頻度を考えると理論的には必要ないかもしれないので、それについてお話しする必要があります。なんらかの理由でコンピュータを離れる前に、私はまだコミットとプッシュをより快適に感じています。その一部は、たとえば、SVNを使用していた数週間、SVNを使用していたときにプロジェクトマネージャーが戻ってきた後、コンピューターが火事になりました。私たちのコードは会社の財産です。また、特にプッシュを使用すると、CIプロセスがすべてのテストの実行を開始できるようになり、離れたときに戻って結果を確認できるようになります。
ああ、時々私は去った後少し酔ってしまいますが、通常は酔っている間に複雑なコードを書くのは悪い考えです(いつもではありませんが、酔っている間にユーレカの瞬間を過ごした後、本当に素晴らしいコンテキストメニューシステムを思いついたとき、しかし、ビールは6本しかなく、コーディングはそれほど複雑ではありませんでした)。それをしようとすると、酔っ払ったコードと落ち着いたコードを混ぜるのではなく、戻る前に落ち着いて書かれたコードをコミットしました。その時点でコミットログは次のようになりますが、"Reverting back to code written before Jagermeister shots."
私はこれをしません酔っ払ったコードのインスピレーションを得ない限り、非常に頻繁に、しかしそれらのまれなケースでは、私が出かけて酔っ払う前に何かをコミットすることは本当に助けになりました。