SCMBootCamp in Tokyo 2 でMercurialのサポーターをしてきました。
SCMBootCamp in Tokyo 2(scmbc)でMercurialのサポーターという事でサポーターをしてきました。
主催者のid:kyon_mmさん、サポーターの皆さん、参加者の皆さんお疲れさまでした。
代表的なまとめはこちら。
- 2011/11/19 SCMBootCamp in Tokyo 2 #scmbc - Togetter
- SCMBootCamp in Tokyo 2に参加してきた #scmbc - Shinya’s Daily Report
今日の時点でSCMBC #2についてはたくさん振り返りエントリが出てきていますので、このエントリではMercurialサポーターのノウハウを共有したいと思います。
SCMBCの実習は3部に分かれています。今回の僕のグループでは次の様な内容で演習をしてもらいました。
演習1
自己紹介
各演習テーブルで自己紹介しましょう。忘れてなし崩しに演習に入らないように。twitterアカウントを教えてもらってフォローするといろいろ円滑に進みます。
bitbucketのアカウント作成
Oracleさんのゲスト用無線LANはhg serveでサーバが立てられません。
中央リポジトリの用意や中央リポジトリへのpushの為のアカウント管理にbitbucketを利用するといろいろ便利なので参加者には必ずbitbucketのアカウントを作成してもらいましょう。
演習2
Mercurialの使い方 マルチプルヘッド地獄編
- hg clone
- hg pull
- hg merge (--tool=internal:merge)
- hg resolve (-l -m -u)
- hg update -C
- hg push
演習1で作成した中央リポジトリを使ってみんなで作業してもらいます。
1ファイルをみんなで編集するので、マルチプルヘッドによるマージ地獄、コンフリクト地獄になります。ここでマルチプルヘッドのマージ方法や、コンフリクト解決方法を体験してもらいましょう。
伝えるべきノウハウ
- マージの仕方
- コンフリクトマーカーの見方
- コンフリクト解決方法
マージの仕方、コンフリクトマーカーの見方(local, otherなど)を覚えてもらいましょう(おもったけど、入門資料にコンフリクトマーカーの見方って必要だよね。)
あと、サポーターも注意なのですが、コンフリクト時に勝手にvimdiffやwinmergeが立ち上がって四苦八苦する事が有ります。
その場合は、参加者に次のコマンドを使ってマージしてもらいます。
$ hg merge --tool=internal:merge
演習3
Mercurialの使い方 チケット駆動開発編
- hg branch
- hg update BRANCH_NAME
- hg merge BRANCH_NAME
- hg push --new-branch
マルチプルヘッド地獄を体験してもらうと、参加者の方は「もうMercurialじゃなくてSubversionでいいや」って気持ちになってしまいます。
が、名前付きブランチを使ったチケット駆動開発を採用すると急に使いやすくなります。
SCMBC #2の僕のテーブルでは次の様に作業してもらいました。
$ hg branch defualt $ hg branch issueN $ hg commit -m "start issueN branch" $ (何か作業) $ hg commit (コメントを入力) $ hg update default $ hg pull $ hg merge issueN $ hg commit -m "merge with issueN" $ hg push
名前無しブランチをマージする場合と比べ、名前付きブランチ切って、作業して、マージするという一連の流れはマージの意義がちゃんと有ります。
マルチプルヘッド地獄の時のマージは不条理に感じますが、名前付きブランチのマージは合理的な操作なのでストレスも少ないようです。
ちなみに、演習2のマルチプルヘッド地獄の場合でも上級者はMQ拡張やRebase拡張などを駆使してサクサク歴史を一直線にします。
サクサク一直線に出来るようになったら、SCMBCでMercurialのサポーター出来ます!
伝えるべきノウハウ
- 名前付きブランチのマージの方法
名前付きブランチのマージ方法を体験してもらいます。自分が今どのブランチに居て、どのブランチをマージするのかを意識してもらいます。
リビジョングラフを見ながら自分の位置と相手の位置を確認してもらうと良いでしょう。
その他の話題
これらの事が教えられたらもっといいなーと。でもSCMBCではなくDVCS塾っぽい内容?ですね。
サポーターががんばりたい点
- サポーターはGUIクライアントの使い方を覚える
GUIクライアントの使い方にサポーターが習熟していないので四苦八苦しました。tortoisehg、machg、sourcetreeの使い方とか。
- サポーターは様々なマージツールの使い方を覚える
マージツールも様々です。3-wayマージツールとか、使い慣れてないと何をどうしたらいいのかわからなくなる。僕araxis mergeしか使えないです><
- コマンドライン主体なのでデザイナーさんには敷居が高い
演習内容が本当にプログラマ向けなのでデザイナーさんにはちょっと敷居が高いです。何とかしたい。
ごめんなさい、コマンドライン使ってください!と割り切るなら、演習で利用するコマンド集(cd, lsなどなど)が有ったら良かったかも。
社内SCMBCやりたい人、未来のサポーター、これからSCMBCに参加したい人へ
SCMBCのサポーターの役割について、雰囲気を掴んでもらえたのではないでしょうか。
社内SCMBCをやりたい人は、だいたいこんな演習をやればMercurialについて学んでもらえると思います。社内SCMBCが出来たら是非SCMBC in Tokyoで一緒にMercurialのサポーターをやりましょう。
これからSCMBCに参加したい人はSCMBCに来ればこれだけの事が体験できます。一人で勉強するのもいいですが、DVCSでは複数人で協調作業をしなければ体験できないことがたくさんあります。SCMBCではその体験が出来ます。
たった2回のノウハウですが、参考になれば幸いです。