分散バージョン管理勉強会で話してきた
12/17 に開催された、分散バージョン管理勉強会に参加して、会社で運用している Git と Hudson を連携させた構成の紹介をしてきました。
会場に行くまでの話とか、他の人の発表の話とか、その他諸々は別エントリにまとめるとして*1、このエントリでは自分の発表に関連するところを書きます。
分かり難いことこそ美徳 (Git は玄人向け?)
という話があったんですけど、あー、うー。なかなか反論難しい感じですよねw
もちろん分かりにくくしようと思って分かり難くなっているわけではないです。
要は何を取って何を捨てるか、という話で、Git では速度をとって他のものを捨てているイメージ。
ハッシュわけわからん、って人はそれなりにいて、自分も「Mercurial のリビジョン番号とハッシュ併用スタイルいいよなー」とか思っていたんですけど、
@bleis リビジョン番号でどこそことか言われても相手と自分で指すchangesetが違うことがよくあるから困るんだよね #shibutra
2010-12-17 21:31:33 via YoruFukurou to @bleis
というのは考えていませんでした。
なるほど確かにそれは困る。
それに「どこそこのリビジョン」とリビジョン番号で指定できることは、自分にとってはあまり重要ではないのですよね。
コミットの粒度を細かくしているため、そのコミット自体にももちろん意味はあるんですけど、自分がほしい情報というのは「チケット番号」の方なのです。
それ以上細かく指定したい場合は「チケット番号ほにゃららの何番目のコミット」と指定できればうれしいかな、とは思う・・・の、で・・・これは後で何か作ろうかな*2。
central リポジトリに push する前に rebase -i してコミットメッセージに同じチケット内の何番目のコミットなのかを含める感じ?
うーん、メリットに対してデメリットもでかそう・・・もうちょっと軽くして、チケット番号と開発者と連番でそれなりに一意になるような情報を埋め込むとか?
で、Git 難しそうとか、Git は玄人向けとかってイメージですが、確かにこういうイメージありますよね。
でも、これはあくまでイメージで、慣れてしまえばそんなことないです。
どうやって慣れるの?という話は・・・うーん、うーん。
まず Git を会社で使いたい!と思う人は、とりあえず Git を入れて、使いまくってみてください。
どこかで「あぁこういうことか」とわかる時が来るはずです*3。
そうなれば次はチームに広めてみましょう。
チームのみんなには clone と add と commit と push と pull と gitk くらいを教えておけばいいでしょう。
で、「わからなかったり困ったことあったらどんどん聞いてね」と定期的に言うようにします。
そして、何か質問とかが来たら、それを実現するためのコマンドだけじゃなくて、「Git ではこうなっていて、だからこういうコマンドを使えばいいよ」とコミットグラフなどを図示してあげるといい感じです。
同じことを何度か聞かれることもあると思います。そういう時は、説明の方法をちょっと変えてみましょう。
こうすれば、チームのみんなも Git が分かるようになっていくし、あなたも知識がどんどん深くなっていきます。
チームのみんなが Git を十分に使えるようになったら、今度はチームのみんなも教える側に回ってもらって、もっと広く広めていけばいいでしょう。
って、多分これは Git に限った話じゃないですね。
コマンド難しそうというイメージ
これも慣れの話ですが・・・
これに関しては別にコマンドにこだわる必要はないですよね。
GUI 使えばいいと思う。Windows で Eclipse じゃないなら GitExtensions が個人的にはお勧めです。
ただ、「最初の一人」になろうと思ったらコマンドも使えないと色々とまずいかもしれません。GUI ではできないこととかあるかもしれませんし。
それに、コマンドと言っても補完機能とかありますし、思っているほど難しくないですよ。
構築とか運用が難しそうという話
という反応が多いようです。参考:分散バージョン管理勉強会の Togetter
ここらへんに関してフォローする目的で作りかけの資料とかあるのですが、さっさと完成させろよ > 自分
どうにかしたいところではありますね。
Groovy
Hudson の Groovy Plugin で色々できるらしいとの情報をもらったので、来年は Groovy の勉強しようかなー。
大規模
懇親会で、分散バージョン管理システムは大規模向けとか思われてることも多いけど、小規模の方が導入も楽だし色々できるよねー、という話があったんですけど、なるほどその通りですね。
Git と Hudson を連携させて「きれいなリポジトリ」を作ったとしても、誰も master に更新できなさそう、とかそういう。
まぁ、そういう人たちをふるいにかける、という意味ではいいのかもしれませんけど、それやると誰も残らなかったりして・・・とか。
人数が少なければフォロー可能でしょうけど、多いとそうもいきませんしね。
DVCS?うちは小規模だからいいや、って人は多いと思うんですけど、小規模の方がむしろやりやすいし便利ですよ!と。