2011年11月27日日曜日

subversion時代のロック機能って、要らなくね?

出稼ぎ先でsvnを辞めさせてmercurialに移行を推進するときに
反論のうち一つが、次のようなものでした。

svnのファイルロック機能が使えなくなる。

これっておかしくね?
目的と手段を完全に履き違えてます。

ファイルロックってなぜ必要?

バイナリファイルを管理しなきゃならないから。
マージできないからコンフリクトした時に面倒だから。

差分管理の出来ないファイルをバージョン管理って、意味なくね?

EXCEL仕様書を追放しましょう。

と言うのは極論だとしても。

わざわざ「ロックを取得」とかやるのは、CVS以前に逆戻りですよ。

筆者の考え方は真逆です。ファイルロックは要りません。

ある担当者がその作業を完了するまで、他の作業者の作業を止めるのは本質的ではありません。同じ「EXCEL仕様書」の別シートであっても、ファイル全体がコンフリクトします。これはEXCELとsvnの問題であり、作業者がそれに付き合って、作業の直列化をするべきではありません。

何でもいいから作業進捗はcommitするべき。そして作業を続けるべき。

それを「ローカルリポジトリ」という切り口で解決したのが、分散バージョン管理です。ファイルロックは要らないのです。

もちろんcommitしたのが「EXCEL仕様書」であれば、手動マージの手間は残ってるのですが、それを先送りにして作業を続けられるのをメリットとすべきでしょう。最後にまとめて出来ることは、先送りにしても良いはずです。

ちなみに、既に出稼ぎ先ではmercurialの導入が済んでますが、前述の反論はしてません。反論してきた彼を説得するのは、本質的ではないので省きました。