あなたの質問は、歴史を順序付けられたコード変更のセットとして説明し、オーガニックが将来の読者に開発プロセスへの手がかりを与えるかどうかを尋ねます。それでも、リリース/統合エンジニアとして、私は歴史をコードとは思わないことがよくあります。私は自分の歴史が語る物語、それが保持している制度的知識、そしてそれが問題を迅速にデバッグできるかどうかにもっと夢中になっています。
私自身でさえ、オーガニックワークフローがこれをうまくやるとは思わない。コーディングの際にDVCSを重視する品質(安価なブランチ、クイックコミット、リモートへの早期保存など)は、会社の統合マネージャーとして評価するものではありません。
私が発行するgit rebase
、git merge
、git diff
、とgit apply
はるかに頻繁にその役割よりもgit add
かgit commit
。のようなツールrebase
により、与えられたコードを機能するものから保守可能なものに変換することができます。
不合理なコミットやあいまいなコミットは有用ではありませんが、他の人に配布するのではなくコードを機能させることが主な関心事である場合、組織的に簡単に書くことができます。のようなコミットCase 15: Fixed a problem
、またはRefactored <cranky legacy feature>
私がそれらをオーサリングするときでさえ、私のメンテナンス自己を縮めます。ただし、「増分」コミットのようなブラックアウトの怒りを引き起こすものはありません。開発者が先日私に渡したこのトピックブランチを考えてみましょう:
$ git log production..topic --oneline
f9a1184 incremental update
156d299 incremental commits
e8d50b0 new incremental updates
511c18c incremental updates, refactor
1b46217 incremental upgrade
9e2b3b8 incremental update
fa68a87 incremental update
これらは悪です。それは、ファウストゥス博士のために設計されたDVCSのようなものです。迅速かつ簡単なソース管理を提供します。あなたは私にあなたのコードメンテナーの魂です。すべての遅延コミットは利己的な行為です。私たちの多くはそれらを書きますが、私たちの未来には、論理的で複製可能なデバッグ可能な歴史もあります。なんらかの方法がなければ、それはできませんrebase
。
失敗した実験については、(新しく作成された)コミットメッセージでそれらを説明してみませんか?一年後、私は半完成スニペットを必要としません。中止された試行の記録が必要です。また、もう一度試行するのに十分な愚かさがある場合は、簡単な説明が必要です。世界には多くの成功したワークフローがありますが、私は故意に壊れたコードを本番用のコードベースにコミットする理由を考えるのに苦労しています。