すがブロ

sugamasaoのhatenablogだよ

バージョン管理勉強会に行ってきたよ(第二回)

参加してきました

id:kazukichop 主催の勉強会です。勉強会の詳細はGoogle Groupsをご覧ください。
内容としては SVN の運用に対するディスカッションと、 git についての事。どちらも新しい発見があって参加して良かった!

SVN について

基本的には押さえていたのだけど、この点は盲点だった・・・!

ロックという手段

詳細は bluegate.org を見てね。
フツーにロックをする、と聞くと「いやいや、何言ってんの」という感じだけど、マージのできないバイナリファイルを複数人で編集する場合には非常に有効なのでは?と思った。
運用でカバー的な感じだけど、このルールをなんとか徹底できれば、悲しい事故は大分防げるのでは・・・。

  1. ファイルを CheckOut する
  2. ファイルを lock する(「svn lock 対象ファイル」で可能)
  3. ファイルを commit する(commit すると lock は解除される)

この状態の 2. の時点で既に他の人が lock していると、警告がでる。

svn: 警告: Path '/path/to/hoge/test.txt' is already locked by user 'sugamasao' in filesystem '/path/to/svn/db'

こんな感じで。
なので、「あ、このファイルは誰かがいじってるんだ」というのが分かる。こうする事で、お互いがバイナリファイルをいじって、後で手動でマージするハメになるのは避けられるのではないだろうか。
弊社では Flash を扱う事が多く、 *.fla ファイルを複数人で触ってしまった、ということがたまにあるので。。

git について

まず、おれはこのサイトを最初に知るべきだったんだよ・・・!
Git ユーザマニュアル (バージョン 1.5.3 以降用)

gitk というコマンド

mac の ports でインストールした場合、標準(と思われる)で入っているコマンドなのだけど、これを使うと GUI でリビジョン等を確認できる。

差分やコミットメッセージ(UTF-8なら日本語も見れたよ)も確認できるので、ちょっと履歴を見たい、というような場合は結構良いかも。

svn の update 的なのってどうすんの?

ロクに調べないで疑問に思っていたのだけど、一瞬で解決した。
pull すれば良いんですよね。うへぇ、阿呆をさらけ出してしまった/(^o^)\

stash で一時的に処理を分ける事ができる

git stash コマンドを使って、今までの作業を一旦脇へ置いておいて、別の対応をしたりできる。
うまく説明できないのだけど、こちらに例があるので、これでわかると思う。
Git ユーザマニュアル (バージョン 1.5.3 以降用)
ちなみに、上記の例だと以下のようになっているけど、構文的に間違っている(現在のバージョンだと上手く行かないだけかも)

git stash "work in progress for foo feature"

これは stash のリスト表示時に表示するためのメッセージを引数で渡しているのだけど、現在の git*1 だと、 save コマンドが必要になる。

git stash save "work in progress for foo feature"

apply でマージができるので、これで突発的なバグ対応とかも気が楽ですね!

その他

懇親会ではインフラ周りの事(仮想化、難しいですよね)とか、どのようにして周囲に SVN を普及していくか、とかを話せてとても有意義でした。
それと、Pshared.netの作者さんとお会いする事ができました。ATNDマッシュアップ仲間ですね><
あ、それと、参加者の Mac 率が非常に高く、「なんで Mac を買うんですか?」という質問に対して。「だってモテそうじゃん」という回答で Mac ユーザの意見は一致しましたw

今後

ネタ的に出し尽くしてしまった感があるし、高度な事をやろうにも周りにとても詳しい人が居ない状況(全員手探り状態)になってしまうとグダグダになってしまいそうなので、何かネタが集まったら次回をやるかも、ということでした。
他の BTS と絡める話でも良さそうだけれど、そうすると主題が変わってしまうのが悩みどころですね。。。

*1:1.6.3.2