SCMBootCamp in Tokyo 3に初参加してきた

 SCMBootCampはすぐに満席になってて参加できなかったんだけど、今回は早めに気付いたので参加できました。Git/Mercurial/Bazzarとあって、どれを体験するかは抽選だったのだけれど、なんとか第一希望のGitになりました。

7月21日 SCMBootCamp in Tokyo 3 #scmbc(東京都)
SCMBootCamp in Tokyo3 #scmbc - Togetter


基調講演

 @flyingfoozyさんのお話。Mercurialの本を書かれてる方だけどそれに限らず、なぜ分散バージョン管理を利用したほうが良いのか、という内容でした。履歴管理部分だけをピックアップして0〜3世代に分けてひとつづつお話してくださったので、他の人にも説明しやすい分かりやすい内容でした。具体的な例はgihyo.jpで連載していた内容で行いました。

世代差で見る履歴管理ツール入門
Mercurialではじめる分散構成管理:特集|gihyo.jp … 技術評論社


演習

演習は数名に対して講師が一人付く体制で、3セットに分けて行いました。御題はチートシートの作成。といっても、リファレンス的なもので、コマンドと簡単な説明をみんなで同じファイルに対して書いていく、というもの。
 第一セットでは、masterの同じファイルに随時追加していくという必ず競合が起こるやり方でした。
 + git checkout で作業ブランチを作り、
+ マスターブランチに戻って、 git pull してみんなの作業を取得、
+ git merge で作業ブランチをマスターブランチにマージして競合を発生させ、
+ 競合をエディタで解消して、 git add / git commit / git push
の繰り返しです。第一セットはゆっくりやっていたので良いのですが、第二セットでペースを上げていくと、pullからpushまでの間に他の人がコミットしてて失敗するということが置き、再度mergeするのでコミットグラフがまるで路線図のように!

Network Graph · STAR-ZERO/necomimi · GitHub

  • 第1セット終了: bdd9400f19e0bd506628977eb4c1ee21f3dc0b1a (最初のオレンジの分岐がマージしたあたり)
  • 第2セット終了: 91300cb95ec0e6fd579674601a899aa8524304a9 (他のリポジトリにフォークがされる前)

 こんなことにならないためにrebaseを使うわけですが、第3セットはリポジトリをフォークして、フォーク元にpull requestをする演習をしたので体験する時間もなく。かわりにスタッフの@pocketberserkerさんが「rebaseで作り直すとこうなるよ」というのを作ってくださいました。上記グラフのpocketberserkerがそうで、一本線になりました。かなり大変だったみたいですが。「これ、rebaseの学習の良い例だよねー」という声があって、全くだなあと思いました。今回の宿題ですね。


講演

 各人から集めた質問をもとに、スタッフや講師によるディスカッション的な感じでした。Gitを使いたいがWindows+Eclipseをやめられない人にはMacを与えればよい、というネタ的なものからブランチ戦略まで。
 このとき挙がった資料で記録したもの。

 A successful Git branching modelは今のプロジェクトに適用するために参考にさせてもらっています。backlogは最近だったかな。チュートリアルもあるので、教材としてもかなり良いですね。


懇親会

 他の用があったので参加できず。残念。だれかまとめてくれないかな。