Skip to content

MetaVersion - SVNベースの並行開発の支援ツール

License

Notifications You must be signed in to change notification settings

unclazz/metaversion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MetaVersion - SVNベースの並行開発の支援ツール

MetaVersionはSVNリポジトリによりバージョン管理を行っているシステム開発を支援するツールです。 このツールは各プロジェクトによるコミットの情報を記録し、同一期間に同一パスに対する変更を行ったプロジェクトを把握することを容易にします。 また履歴表示や差分表示に相応のレスポンスタイムを必要とするSVNコマンドに対する部分的な代替手段を提供します。 このツールの機能概要やセットアップ方法、主要な画面の説明については、ext/doc配下のPDFドキュメントも参照ください。

どうしてこのようなツールが必要なのか?

システム開発の現場ではしばしば複数のプロジェクトが並行して進んでいます。 保守運用フェーズともなれば比較的大規模な開発プロジェクトだけでなく、小規模で期間も短いシステム改修も多く発生します。

こうした並行開発状況においては、各プロジェクトにおいてどのようなコミットを行ってきたか把握することが必要になります。 またとくに複数プロジェクト間で同一パスに対する変更が発生していないかを確認することが必要になります。 このようなニーズに応えるためMetaVersionは構想されました。

このツールで何ができるの?

バージョン1.0.xにおいてはおよそ次のような機能が提供されています:

  • あるプロジェクトが行ったSVNコミットの一覧と詳細の表示
  • あるプロジェクトが行ったSVNコミットによる重複のない変更パス一覧の表示
  •               〃                 のCSVダウンロード
  • あるプロジェクトに並行して同一パスへの変更を行ったプロジェクト一覧の表示
  •               〃                  のCSVダウンロード
  • あるSVNリポジトリに行われたコミットの一覧と詳細の表示
  • SVNリポジトリのコミット履歴の自動インポート
  • SVNリポジトリのコミットと各プロジェクトの自動/手動での紐付け

バージョン1.1.xではコミット一覧やコミット詳細に対象ブランチの情報表示が追加され、CSVダウンロードやコミット紐づけの機能について存在していた不具合の解消が行われました。

どのようなアーキテクチャでつくられているの?

MetaVersionはJava EE環境で稼働するアプリケーションです。ターゲットとしているバージョンは7です。 アプリケーションは、データ参照・更新の機能を持つAPIを提供をもっぱらとするサーバサイドと それらのAPIを使用してページの画面制御を行うクライアントサイドとから構成されます。

サーバサイドは Spring Bootおよびそこに組み込まれたSpring Web MVCSpring Securityと、 JSONとJavaオブジェクトを相互変換するためのライブラリJackson、 ORマッピングのためのフレームワークMyBatisや SVNリポジトリ・アクセスのためのライブラリSVNKit、 HTMLテンプレート処理ライブラリThymeleafやCSV加工処理ライブラリApache Commons CSVなどを使用して構築されています。 データベースにはPostgreSQLの9.4を利用しています。

クライアントサイドはAngularJSの主要モジュールとBootstrapのCSSを使用して構築されています。コーディングにはTypeScriptが利用されています。

どのようにしてセットアップするの?

MetaVersionのセットアップにはJDKのバージョン7以上が必要になります。またコマンドラインでmvnが利用できること、PostgreSQLのバージョン9.4以上のDBクラスタ(DBインスタンス)に接続できる状態になっていることも前提になります。

Githubからプロジェクトのリソース一式をダウンロードしたら、プロジェクトのルート・ディレクトリに移動します。 ext/ddlディレクトリ配下にアプリケーションが必要とするDBオブジェクトを作成するためのDDLが格納されています。 これをPostgreSQL上のDBクラスタで実行して必要なテーブル、ビュー、シーケンス、索引を作成します。

次にsrc/resources/application.propertiesに記載されたPostgreSQLの接続情報を適宜編集します:

spring.datasource.url=jdbc:postgresql://localhost:5432/metaversion
spring.datasource.username=postgres
spring.datasource.password=********

mvn spring-boot:runコマンドを実行します。これにより必要なライブラリのダウンロードが行われたあとでビルドが行われ、それが終わると組込み型のTomcatが起動してアプリケーションがデプロイされます。

独立して稼働しているTomcatにデプロイを行う場合は、mvn packageコマンドを実行してください。同様にビルドが行われて、targetディレクトリ配下に*.warファイルが作成されますので、これをTomcatのwebappsディレクトリにコピーします。

ビルドとデプロイが終わったらWebブラウザからhttp://localhost:8080/initにアクセスしてください。独立型のTomcatにデプロイした場合はhttp://localhost:8080/(*.warファイル名)/initになります。このページを表示することでアプリケーションの動作に必要なマスタデータとadministratorユーザの登録が行われます。

初期化が成功した旨のページが表示されたらhttp://localhost:8080/にアクセスしてください。独立型のTomcatにデプロイした場合はhttp://localhost:8080/(*.warファイル名)/になります。自動的にログイン・ページにリダイレクトされるので、最前の初期化処理で作成されたadministratorユーザでログインを行います。初期ログイン情報はsrc/resources/application.propertiesに記載されています。

ログインに成功したら必要なユーザ、リポジトリ、プロジェクトの情報を登録していきます。リポジトリからのコミット情報のインポートやコミット情報とプロジェクトとの紐付けの処理は、アプリケーションへのユーザ・アクセスをトリガーにして、直近1時間に処理が行われていない場合に自動で起動します(近いうちに任意のタイミングで処理を起動するための機能を追加する予定です)。