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