いつの間にかhg recordのハンクが最少単位になっていた
いつの間にか(手元のMercurial1.9ではすでにそうなっていた)hg recordでコミットできるハンクが最少単位になった。
最少単位っていうのは、連続して変更された行をまとめて一つのハンクとしている。
たとえば、次のコードを、
class Hoge def initialize(a, b, c) @a, @b, @c = a, b, c end def hoge @a end def foo @b end def bar @c end end
こう直す。
class Hoge def initialize(a, b, c) @a, @b, @c = a, b, c end def hoge @a end def foo @b end def bar @c end def hogefoobar @a+@b+@c end end
メソッドの間に空行をいれる修正に加えて、Hoge#hogefoobar()を新しく作ってしまった。
このコミットをひとまとめにすることは許されないので、recordして「コードを読みやすくする修正」と「メソッドの追加」を分けてコミットする。
連続したハンクは4個なので、hg recordすると、
$ hg record diff --git a/a.rb b/a.rb 4 個のハンク、 7 行の変更 'a.rb' の変更点を調べますか? [Ynsfdaq?]
のように聞かれるので、空行を挿入した行だけのハンクをまず登録/コミットし、追加したメソッドをコミットする。
登録できるハンクが細かくなったので、手当たり次第編集したときも、細かく論理的な単位でコミットできるようになった。
綺麗なコミットを作るためにみんな使う事。