バージョン管理システム (ClearCase) による開発 2011 年度技術発表 新横浜支店道券秀雄
ClearCase とは? 現在は IBM のラショナル部門が開発しているバージョン管理システム Linux Solaris Windows といった様々なプラットフォームで動作 中規模以上の開発で用いられ 数百人から数千人の管理ができる MVFS(Multi Version File System) と呼ばれる仮想ファイルシステムを使用する
ClearCase とは? 現在は IBM のラショナル部門が開発しているバージョン管理システム Linux Solaris Windows といった様々なプラットフォームで動作 中規模以上の開発で用いられ 数百人から数千人の管理ができる MVFS(Multi Version File System) と呼ばれる仮想ファイルシステムを使用する
バージョン管理システムとは? ファイルの作成日時 変更日時 変更点等の履歴を保管するもので この保管したリポジトリ ( 管理情報 ) により 過去の状態を復元することを容易にするもの リポジトリ( 管理情報 ) を1ヶ所に持つ集中型と ローカルにも持つ分散型に分類される 集中型 分散型 開発者 開発者
バージョン管理システムとは? 集中型と分散型の利点 及び欠点 集中型 分散型 リポジトリ管理 パフォーマンス 障害 一元管理により簡単 一元管理の為に負荷に弱い 一元管理の為に障害発生時は全体に影響する リポジトリの分散により煩雑 リポジトリの分散により負荷に強い リポジトリの分散により障害発生時でも影響を限定できる ロックロック可能ロック不可
主なバージョン管理システム ( 集中型 ) CVS 無償ネットワークでの使用を考慮した 最初のバージョン管理システム (1986) 後発の標準となっている Subversion (SVN) 無償 CVS の問題点を解決した CVS 後継のバージョン管理システム (2000) 最も広く使われている ClearCase 有償 Atria Software 社が UNIX 向けに開発 (1992) 後に Windows 版もリリースされた 現在は IBM のラショナル部門が開発している
主なバージョン管理システム ( 分散型 ) BitKeeper 有償 BitMover 社が開発 (1998) 2005 年に有償になったことで それまで Linux のカーネルのソースコード管理用に使用されていたが 使用されなくなった Git 無償 リーナス トーバルズ (Linux 開発者 ) が Linux カーネルのソースコード管理用に開発 (2005) 高速で効率的に動作する また 操作性は CVS と大きく異なる Mercurial (Hg) 無償 Linuxカーネル開発者のMatt Mackallが開発 (2005) 機能を抑えることで 高速に動作させてる 操作性は CVSに似ている
バージョン管理システムの評価 マーチン ファウラー氏の blog(biki) で掲載されたバージョン管理システムの評価 必要なスキル VSS ClearCase TFS お勧め閾値 SVN Git Hg お勧め度
バージョン管理システムの評価 マーチン ファウラー氏の blog(biki) で掲載されたバージョン管理システムの評価 スキルが要るし お勧めしない ClearCase TFS スキルが要るけど オススメ Git Hg VSS 絶対オススメしない SVN スキル不要で オススメ
構成仕様の記述と操作その 1 ClearCase では 構成仕様の記述をすることで 作業領域 (View) に取込むファイルを指定する 1 構成仕様の記述例 element * CHECKEDOUT element * /main/latest element とは ClearCase の管理対象のファイルやフォルダの事 elemet * は全ての element となる 一行目は その View で チェックアウト されている全ての element を取込む という事 二行目は それ以前の条件に該当しなければ main ブランチの 最新版 を取込む という事
構成仕様の記述と操作その 2 1 構成仕様の View で チェックアウト 修正 チェックインをすると 以下のようになる 修正前修正中修正後チェックアウトチェックイン
構成仕様の記述と操作その 3 main から rel1_bugfix ブランチを作成し 同様の操作をした場合は 以下のようになる 修正前修正中修正後チェックアウトチェックイン
構成仕様の記述と操作その 4 構成仕様でチェックアウト時に main からブランチ rel1_bugfix を作成させるには 以下の記述をする 2 構成仕様の記述例 element * CHECKEDOUT element * main rel1_bugfix LATEST element * main mkbranch rel1_bugfix element * main LATEST 二行目は それ以前の条件に該当しなければ main から作成したブランチ rel1_bugfix の 最新版 を取込む という事 三行目は それ以前の条件に該当しなければ main からブランチ rel1_bugfix を作成する という事
構成仕様の記述と操作その 5 構成仕様で time による時間制限の記述をする 3 構成仕様の記述例 element * CHECKEDOUT element * main rel1_bugfix LATEST element * main mkbranch rel1_bugfix time 28-October-11. 9:00 element * main LATEST 四行目は 2011 年 10 月 28 日午前 9 時時点の main からの element を取込む という事 これにより 修正途中で他の人からの修正による影響を考えずに済む
構成仕様の記述と操作その 6 構成仕様記述でコメント扱いにするには 以下のように先頭に # を記述する 4 構成仕様の記述例 element * CHECKEDOUT element * main rel1_bugfix LATEST element * main mkbranch rel1_bugfix # time 28-October-11. 9:00 element * main LATEST 四行目は 3 と同じ time による記述だが 先頭に # があるのでコメント扱い ( 無効 ) になる
構成仕様の記述と操作その 7 ブランチ rel1_bugfix の修正を main へマージすると以下のようになる マージ前 マージ後
ClearCase を扱って 構成仕様の記述で View へのファイルの取込みが自由自在なのは感心した 修正の依存関係 ( マージ線 ) が グラフィカルで非常に分かり易いのに感心した MVFS により クライアントの PC には実ファイルが無く サーバーにある 従って grep 等を実施すると恐ろしく時間がかかる MVFS による為と思われる ( 不具合?) 一時的にファイルの中身が空になる現象がある もしかしたら現在の職場環境だけかも?
まとめ バージョン管理システムはやはり Subversion が使い勝手がよいと思われる 今後 分散型のバージョン管理システムが流行るとしたら Git と思われる ClearCase は MVFS により 様々な利点と欠点を含んでいる 現時点の個人的な考えでは 利点よりも欠点が上回っているとしか言えない
目次 ClearCase とは? バージョン管理システムとは? 主なバージョン管理システム ( 集中型 ) 主なバージョン管理システム ( 分散型 ) バージョン管理システムの評価 MVFS(Multi Version File System) 構成仕様の記述と操作 ClearCase を扱って まとめ
バージョン管理システムとは? 集中型
バージョン管理システムとは? 分散型
バージョン管理システムの評価 マーチン ファウラー氏の blog(biki) で掲載されたバージョン管理システムの評価
MVFS (Multi Version File System) ClearCase では MVFS という独自の仮想ファイルシステムでファイルを扱っており これにより利点と欠点が発生している 利点コンパイル時に変更がないファイルは ビルドせず 管理情報をもったサーバのオブジェクトをコピーする 欠点動作が遅い 単純なコミットやチェックアウトが数分かかることも稀ではない