複数のリポジトリを統合できる バージョン管理システムの提案と試作
DESCRIPTION
複数のリポジトリを統合できる バージョン管理システムの提案と試作. 田中 義己 井上研究室. 背景. ソフトウェア開発規模の拡大 コンポーネント・モジュール単位 再利用 分散環境 ソフトウェア品質評価 開発組織単位 開発者単位. 背景. ソフトウェア管理 バージョン管理システム の利用 開発履歴の蓄積・閲覧が可能 バグ発見が容易になる 過去の状態への移行が可能になる 変更の統合が簡単になる. バージョン管理. プロダクトに対する追加・削除・変更などの作業を履歴として蓄積する 蓄積したデータを開発者に提供する. 管理単位:リビジョン プロダクトの - PowerPoint PPT PresentationTRANSCRIPT
2001/02/20 修士論文発表会 1
複数のリポジトリを統合できるバージョン管理システムの提案と試作
田中 義己
井上研究室
2001/02/20 修士論文発表会 2
背景ソフトウェア開発規模の拡大 コンポーネント・モジュール単位 再利用 分散環境
ソフトウェア品質評価 開発組織単位 開発者単位
2001/02/20 修士論文発表会 3
背景ソフトウェア管理
バージョン管理システムの利用 開発履歴の蓄積・閲覧が可能
バグ発見が容易になる 過去の状態への移行が可能になる 変更の統合が簡単になる
2001/02/20 修士論文発表会 4
バージョン管理プロダクトに対する追加・削除・変更などの作業を履歴として蓄積する蓄積したデータを開発者に提供する
リポジトリ
ブランチ
トランク開発者
開発者
開発者
リビジョンツリー
データ操作
データ操作
1.0
1.1
1.2
1.0.1
1.0.2
管理単位:リビジョン
プロダクトの各段階での状態
・実データ・属性データ
2001/02/20 修士論文発表会 5
既存のシステムにおける問題点
開発者単位の履歴蓄積が困難 複数の開発者データが混在している
点在するリポジトリの一元管理が困難 異なるリポジトリに存在するコンポーネン
トは,開発者も別々に管理する必要がある
リポジトリ間でのコンポーネント複製 コンポーネントの再利用などで複製と行う
と,複製時以降の変更が反映されない
2001/02/20 修士論文発表会 6
問題点1開発者単位の履歴蓄積が困難 複数の開発者のデータが 混在している 1つのリビジョンデータとして 開発者に依存したデータと プロダクトデータが一緒に 蓄積されている
リポジトリ
開発者 開発者
開発者
2001/02/20 修士論文発表会 7
問題点2点在するリポジトリの一元管理が困難 異なるリポジトリに 存在するコンポーネ ントを,別々に管理 する必要がある
リポジトリ
作業領域
リポジトリ
作業領域
開発者
2001/02/20 修士論文発表会 8
問題点3リポジトリ間でのコンポーネント複製 データが冗長になる 複製時以降の複製元 の更新が判らない ⇒ 反映できない
開発者 A( 複製元 )
開発者 B( 利用者 )
2001/02/20 修士論文発表会 9
解決法問題点1
開発者単位の履歴蓄積が困難
問題点2
点在するリポジトリの
一元管理が困難
問題点3
コンポーネント複製
による問題
解決法2
複数の作業領域を1つにする
解決法1
開発者単位での管理を可能にする
解決法3
複製を行わずに参照とする
新たなバージョン管理手法
2001/02/20 修士論文発表会 10
バージョン管理手法 DiRM/VR
開発者単位の履歴蓄積が可能複数存在するリポジトリの一元管理が可能コンポーネントの複製が不必要
実データと開発者用データを分離して管理する抽象リポジトリを導入する
2001/02/20 修士論文発表会 11
インタフェース部
インタフェース部
抽象リポジトリ4構成要素 実データ管理部 属性データ管理部 インタフェース部 制御部
開発者と1対1対応 実データ
管理部実データ管理部
実データ管理部
属性データ管理部
属性データ管理部
制御部 制御部
抽象リポジトリ
抽象リポジトリ開発者 開発者
1つの抽象リポジトリ内に複数の実データ管理部が
存在しても良い.
開発者に実データ管理部と属性データ管理部を統合
した1つのリポジトリを提供
実データ管理部属性データ管理部
制御部
2001/02/20 修士論文発表会 12
実データ管理部プロダクトデータの管理 1つの抽象リポジトリ内部に複数存在 複数の抽象リポジトリ間で共有
開発者の直接データ格納・変更を禁止 プロダクトデータの信頼性が向上 ⇒ 制御部を介した間接的アクセス
2001/02/20 修士論文発表会 13
属性データ管理部開発者依存のデータを管理 実データへのリンクを保持 属性データ管理部の1リ ビジョンは,実データ管理 部の1リビジョンを指す
属性データ管理部
実データ管理部
実データ管理部
この2つのリビジョンは異なるコンポーネントのリビジョンを指している
2001/02/20 修士論文発表会 14
制御部実データ管理部へのアクセスデータ操作 リビジョン作成 ( データ格納 )
従来方式 実データ管理部のリビジョン利用 リビジョンツリー参照
データ取得 リビジョン間の差分情報取得
リビジョンツリー参照
2001/02/20 修士論文発表会 15
リビジョン作成 ( データ格納 )リビジョンツリー参照 実データ管理部内のリ
ビジョンツリー全体もしくはその一部を引用
ツリー構成は参照元と全く同形
複製時以降の複製元に対する変更も容易に反映可能
属性データ管理部
実データ管理部
後で追加されたリビジョンも参照可能
指定されたリビジョンツリー
2001/02/20 修士論文発表会 16
システムの試作新手法に基づいたバージョン管理システム DLCM 言語 : C++ コード量 : 8500 行程度 + ライブラリ (STL)
データ閲覧システム DLCMView 言語 : Perl コード量 : 1600 行程度 + ライブラリ (jcode.pl)
開発環境, CPU : PentinumⅢ 1GHz × 2 RAM : 1GBytes OS : FreeBSD 4.2-STABLE
2001/02/20 修士論文発表会 17
コマンド
バージョン管理システム DLCM 実データ管理部
CVS リポジトリの利用 属性データ管理部
1コンポーネントを1ファイルで管理
インタフェース部 オペレーション解析
制御部 解析結果受け取り 実データ管理部へのアクセ
ス 取り出したデータの閲覧
開発者
実データ管理部属性データ管理部
属性データ用のファイル
制御部
データ編集
CVS のインタフェース
インタフェース部
DLCM
オペレーション解析
解析結果受け取り
CVS リポジトリ
2001/02/20 修士論文発表会 18
データ閲覧システム DLCMView コンポーネント一覧
属性データ管理部に存在するコンポーネントの一覧
リビジョン一覧 各コンポーネントに存在する
リビジョンの一覧 リビジョンデータ閲覧
各リビジョンのデータ表示 差分データ閲覧
2リビジョン間の差分データ表示
属性データ管理部
実データ管理部
開発者
Web ブラウザ
Web サーバ
CGI
DLCMView
2001/02/20 修士論文発表会 19
適応実験開発者単位の履歴を取得する実験 4人の開発者が,コンポーネントに対して
行った履歴の取得
点在するリポジトリを一元管理する実験 マルチバイト文字に未対応のライブラリと対
応済みのライブラリを利用
コンポーネントの複製せず,参照とする実験 FreeBSD と OpenBSD のコンポーネントを利
用
点在するリポジトリを一元管理する実験
2001/02/20 修士論文発表会 20
実験の方法点在するリポジトリを一元管理する実験 マルチバイト文字に未対応のライブラリから対応済みのライブラリへの移行
属性データ管理部
実データ管理部
未対応のライブラリstrctrl.cpp
実データ管理部
対応済みのライブラリjstrctrl.cpp
strctrl.cpp
2001/02/20 修士論文発表会 21
実験の結果リビジョンが 1.2 から 1.3 になるときに,実データがstrctrl.cpp から jstrctrl.cpp へと替わっている
1.4 が存在するのは,一部パスを変更する必要があったためであり,実際のソースコードには手を加えていない
マルチバイト文字の処理が可能となった
2001/02/20 修士論文発表会 22
まとめ
開発者単位の履歴蓄積が可能複数存在するリポジトリの一元管理が可能コンポーネントの複製が不必要
プロダクトデータと開発者データを分離したバージョン管理システムの提案と試作
⇒ 適応実験により確認
2001/02/20 修士論文発表会 23
今後の課題実データ管理部内のリビジョンが繁雑 リビジョン競合時は,単純に別のリビジョ
ンとして退避し格納する為 ⇒ ブランチの利用法を定義
システムにおける実行時間が長い 既存のシステムに比べ,ファイルアクセ
ス回数が多い為 ⇒ ファイルアクセスの最適化
2001/02/20 修士論文発表会 24
終
2001/02/20 修士論文発表会 25
バージョン管理システムの利点
バグの発見パッチを簡単に作成する仕組みの提供容易に以前のバージョンへ戻すことが可能変更統合が簡単グループ作業の簡単化
2001/02/20 修士論文発表会 26
リビジョン作成 ( データ格納 )従来方式 実データ,属性
データ双方のリビジョン作成
属性データ管理部 実データ
管理部
属性データ管理部 実データ
管理部
実データ管理部のリビジョン利用 既に存在する実データを
リンクするリビジョンの作成
2001/02/20 修士論文発表会 27
データ取得リビジョンの内容取得 指定された属性デー
タ
属性データからリンクされている実データ
+属性データ
管理部実データ管理部
開発者
指定されたリビジョン
2001/02/20 修士論文発表会 28
リビジョン間の差分情報取得実データ内部にある差分情報の利用は不可
互いに異なるコンポーネントのりビジョンである可能性の存在.
属性データ管理部
実データ管理部
実データ管理部
差分計算
指定された2つのリビジョン
2001/02/20 修士論文発表会 29
適応実験1開発者を単位とした開発履歴取得 各開発者毎の履歴は 属性データ管理部に存在
システムのログ出力や DLCM Viewer で容易に 閲覧・取得が可能
属性データ管理部
実データ管理部
属性データ管理部
Main Sub
2001/02/20 修士論文発表会 30
適応実験3コンポーネントに複製せずに参照する FreeBSD の openssh コンポーネントを OpenBSD の ssh コンポーネントへの参照とした.
5つのファイルに対して変更を行うだけで,実際に実行形式ファイルを作成することができた.
複製ではなく,参照としても問題は生じない 冗長なデータを削減
2001/02/20 修士論文発表会 31
問題点3リポジトリ間でのコンポーネント複製 データが冗長になる 複製時以降の更新が 分からない. ⇒ 反映できない