Kanazawa.rb Meetup 11 で喋ってきた
「『意識高い』もくもく」なのに合計すると1時間くらい喋ってた。皆さん、邪魔してごめんなさい。
今回喋ったのは
- できる!Meetupデザイン
- Git小咄二題
の二つ。
特に Git の方は前回 meetup 10 でみんなが避け気味だったけど実際やるときにはできた方がいい reset –hard と rebase の話を中心にするという大胆な構成。と言ってもそんな難しい話ではない。
- コミットオブジェクトは自身の参照先を知っている
- だから Pro Git の図の矢印は人間の感覚の反対方向を向いている。このことは知ってないとダメ。
- Subversion と違ってコミットオブジェクト自身が関係を持っているのでそれを組み替えることができる。これが rebase
- rebase はコミットオブジェクトの同一性にこだわらなければ実際の pull/push をスムーズにするのに使えばいいよ
- reset –hard は rebase の反対向きに使える
- これを知っていればたぶん stash を使う場面はほとんどなくなる。commit 以外の作法を知るのは面倒なのでもう全部 commit しちゃえばいいよ。
今回は rebase -i は無視。
喋ったあとに軽くディスカッションして、自分はコミットオブジェクトの同一性に何もこだわっていないんだなぁということに気がついた。
diff が合っていればいいし、というか後から読みやすい diff ができた方が嬉しいし、コミットオブジェクトが同一かどうかよりも成果が出る方が重要で、
成果を出すことをためらわなくていいように便利な機能はどんどん使えばいいじゃん
と思っている。ちゃんと動くかどうかはコミットオブジェクトの同一性ではなくテストで保証すべきだ。
確かに自分が100人からの開発者の上に立つ立場であったら Git の導入にはいろいろ思うところはあるだろうなという気はしている。そして先日 Twitter の timeline で見かけた、だったら Mercurial 使えばいいじゃんという意見には今はすごく納得している。
「gitをチームで使う時は免許制度がいるかも」とかおっしゃっている人がいるようですが、そんなに複雑でリスクを伴うツールを使うほうが間違っていると思います。 Simple is better than complex. If hard to explain, it\\'s a bad.
— Fomalhaut Weisszwerg (@FmtWeisszwerg) July 2, 2013
gitに免許必要とか言ってる人たち、gitじゃなくてmercurial使えよ感はんぱない
— Takumi IINO (@troter) July 2, 2013
@troter えっそういう問題なんすか?
— wtnabe (@wtnabe) July 2, 2013
@wtnabe 「リモートのリポジトリ壊すから免許制」って文脈だと思っているので(git push -fが毎回登場するので)、mercurialを利用すればその操作そもそも禁止されてるじゃん、、と。
— Takumi IINO (@troter) July 2, 2013
@troter あはーん、なるほど。まぁ確かに壊す自由はありますね。禁止もできるけど。
— wtnabe (@wtnabe) July 2, 2013
mercurial「家畜の安寧 虚偽の繁栄」mercurial queue「死せる餓狼の自由を」git「死せる餓狼の自由を」
— Takumi IINO (@troter) July 2, 2013
そして 自分は 自分の膝を撃ち抜く自由が欲しい、と。
これ、Ruby に対して感じる自由と同じだなと気づいた。Rails の人たちが GitHub 使い始めたのが間違いなく大きかったと思うけど、Rubyist の志向と Git ってやっぱり相性がいいのかもしれない。
なんてことを思った週末でした。
※ 攻殻機動隊 S.A.C. 2nd GIG ネタをちゃんと盛り込めたのがいちばんの収穫だったかもしんない。