(57)【要約】【課題】既存のバージョン管理システムが、既存の懸案管理システムで管理している懸案事項毎にバージョン管理を行うことを可能にする。【解決手段】ブランチ作成部１１１は、既存の懸案管理システム１０２を参照し、既存のバージョン管理システム１００に、懸案事項１５０ごとにトランクリポジトリ１４０を派生元としてブランチリポジトリ１４２を作成させる。チェックアウト処理部１１２は、懸案管理システム１０２に、ブランチリポジトリ１４２のソースファイル１４３をソースファイル１３２としてデータ端末１３０の作業フォルダ１３２に格納させる。コミット処理部１１３は、懸案管理システム１０２に、ソースファイル１３２の変更内容をブランチリポジトリ１４２へ反映させる。マージ処理部１１４は、懸案管理システム１０２に、ブランチリポジトリ１４２のソースファイル１４３の変更内容を派生元のトランクリポジトリ１４０へ反映させる。【選択図】図１
2013191003.tif 000002
【特許請求の範囲】
【請求項１】
開発中のソフトウェアの懸案事項を含む懸案情報を格納する懸案管理ＤＢを有する懸案管理システムと、開発の主流であるトランクリポジトリと当該トランクリポジトリから派生したブランチリポジトリとを格納するリポジトリＤＢを有するバージョン管理システムと、記憶装置内に作業用フォルダが作成されるユーザ端末と通信可能であるブランチリポジトリ管理システムであって、
前記懸案管理ＤＢに格納されている懸案情報と、前記リポジトリＤＢに格納されているトランクリポジトリと、前記リポジトリＤＢに格納されているブランチリポジトリとの関係を示すリポジトリ情報が登録されたブランチ管理テーブルが格納されたブランチ管理ＤＢと、
前記懸案管理システムの有する懸案管理ＤＢに、前記ブランチ管理ＤＢに格納されているブランチ管理テーブルに前記リポジトリ情報として登録されていない新規懸案事項が存在するか否かを判別し、新規懸案事項が存在する場合には、前記バージョン管理システムに、前記リポジトリＤＢに格納されているトランクリポジトリを派生元として前記新規懸案事項に対応するブランチリポジトリを作成させるとともに、前記新規懸案情報と派生元の前記トランクリポジトリと作成された前記ブランチリポジトリとの関係を示すリポジトリ情報を前記ブランチ管理テーブルに登録するブランチ作成手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記リポジトリＤＢに格納されているブランチリポジトリに含まれるソースファイルを前記ユーザ端末の作業用フォルダに格納させるチェックアウト処理手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記作業用フォルダに格納されているソースファイルの変更内容を当該ソースファイルの取得元のブランチリポジトリに反映させるコミット処理手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記リポジトリＤＢに格納されているブランチリポジトリに含まれるソースファイルの変更内容を当該ブランチリポジトリの派生元であるトランクリポジトリに反映させるマージ処理手段と、
を備えることを特徴とするブランチリポジトリ管理システム。
【請求項２】
前記ブランチ管理テーブルに登録されるリポジトリ情報は、前記各懸案事項に付与された懸案ＩＤと、ブランチリポジトリＵＲＬと、ブランチ開始リビジョンと、派生元リポジトリＵＲＬとを含むことを特徴とする請求項１に記載のブランチリポジトリ管理システム。
【請求項３】
前記チェックアウト処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定された懸案ＩＤに対応するブランチリポジトリのチェックアウトを、前記ユーザ端末を用いてユーザによって指定された前記作業用フォルダに向けて実行させることを特徴とする請求項２に記載のブランチリポジトリ管理システム。
【請求項４】
前記コミット処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定された作業用フォルダに格納されているソースファイルの変更内容を当該ソースファイルの取得元のブランチリポジトリに反映させることを特徴とする請求項１ないし３のいずれか１項に記載のブランチリポジトリ管理システム。
【請求項５】
前記マージ処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定されたブランチリポジトリに含まれるソースファイルの変更内容を当該ブランチリポジトリの派生元であるトランクリポジトリに反映させることを特徴とする請求項１ないし４のいずれか１項に記載のブランチリポジトリ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのソースファイルのバージョン管理において、懸案事項ごとにリポジトリを管理するブランチリポジトリ管理システムに関する。
【背景技術】
【０００２】
一般に、ソフトウェア開発では、コーディング・テストを経てソースファイルに対する変更が度々行われる。また、テスト中およびリリース後にバグが発生するたびに、ソースファイルに変更が加えられる。この変更内容を管理するシステムとしてバージョン管理システムが公知となっている（例えば、特許文献１参照）。
【０００３】
ソースファイルの変更ごとにバージョン管理システムにソースファイルを登録することで、過去に加えた変更内容をいつでも確認することができ、ソフトウェア開発におけるソースファイルの変更内容を把握することができる。バージョン管理システムでは、ソースファイルの各バージョンをデータベースに保持しており、このデータベースは一般にリポジトリと呼ばれる。
リポジトリは、ソースファイルの変更履歴の積み重ねであり、一本のラインのようなものである。このリポジトリを途中から派生させ、別のリポジトリを生成することができるバージョン管理システムがある。この派生させたリポジトリはブランチリポジトリと呼ばれる。ブランチリポジトリは、主流の新機能開発中にバグ修正が割り込みで発生した場合等に用いられる。また、ブランチリポジトリで開発した変更内容を派生元のリポジトリへ反映することをマージと呼ぶ。
【０００４】
一方、ソフトウェア開発では、これから実装しようとする新規/追加機能および修正するバグなどを懸案事項と呼ぶ一つ一つの課題として管理し、懸案毎に設計・開発を行うことが主流である。この場合、ソースファイルの変更は懸案ごとに行う。懸案管理については、管理表を作成し手動で管理する方法と、データベースに格納したシステムで管理を行う方法がある。後者の方法として懸案管理システムが公知となっている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−８５０２０号公報
【特許文献２】特開２００７−３１６８５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ソフトウェア開発では、複数の懸案事項に関する開発を並行して進めることが多い。この場合、懸案毎にソース変更が行われ、バージョン管理システムのリポジトリに変更したソースファイルが登録されることになる。ここで、懸案事項の開発が並行して進められた結果、開発の開始およびソースファイルのリリースタイミングが懸案事項毎にバラバラになることがある。
例えば、ある機能を追加機能として実装するため、次のリリースに向けてソース変更を行っている際に、リリース済みである別の機能についてのバグが発生し、すぐに修正してリリースを行う必要が生じたとする。この場合、追加機能に関する懸案事項Ａと、バグ修正に関する懸案事項Ｂが懸案管理システムに登録されているとすると、懸案事項Ａに関するソース変更中に懸案事項Ｂに関するソース変更が途中で割り込まれる形になり、ソース変更を管理しているバージョン管理システムのリポジトリには、懸案事項Ａに関する変更、懸案事項Ｂに関する変更、懸案事項Ａに関する変更の順に変更履歴が記録される。すると、懸案事項Ａと懸案事項Ｂの変更履歴が混ざった状態になり、懸案事項Ａだけの変更履歴をリポジトリから取り出すことは容易ではない。
【０００７】
これを防ぐ目的で懸案事項ごとにブランチのリポジトリを作成して管理する方法がある。しかし、バージョン管理システムでは、作成されたブランチを懸案管理システムと連携させることができず、使う側が懸案管理システムから懸案事項の名前やＩＤをリポジトリ名とし、ブランチを作成するといった一連の操作を手動で行う必要がある。ブランチに付ける命名法則も開発チーム内で統一させる必要があり、使う側もそれを意識する必要がある。また、懸案事項についての開発終了後ブランチリポジトリを元のリポジトリへマージしてリリースする際、ブランチの変更開始箇所（どこから）、変更終了箇所（どこまで）、派生元リポジトリ（どこに）をブランチおよび派生元のリポジトリの変更履歴から探し出して決め、コマンドを実行してマージする必要がある。こういった、バージョン管理システムの利用がしにくいという課題がある。
【０００８】
本発明の目的は、既存のバージョン管理システムと既存の懸案管理システムを連携させることができ、懸案管理システムで管理している懸案事項を指定するだけで、懸案事項毎にブランチリポジトリを作成し、ソースを登録し、ブランチリポジトリを派生元のリポジトリへマージするといった操作をバージョン管理システムの仕組みを意識せず容易に行うことができるブランチリポジトリ管理システムを提供することである。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のブランチリポジトリ管理システムは、
開発中のソフトウェアの懸案事項を含む懸案情報を格納する懸案管理ＤＢを有する懸案管理システムと、開発の主流であるトランクリポジトリと当該トランクリポジトリから派生したブランチリポジトリとを格納するリポジトリＤＢを有するバージョン管理システムと、記憶装置内に作業用フォルダが作成されるユーザ端末と通信可能であるブランチリポジトリ管理システムであって、
前記懸案管理ＤＢに格納されている懸案情報と、前記リポジトリＤＢに格納されているトランクリポジトリと、前記リポジトリＤＢに格納されているブランチリポジトリとの関係を示すリポジトリ情報が登録されたブランチ管理テーブルが格納されたブランチ管理ＤＢと、
前記懸案管理システムの有する懸案管理ＤＢに、前記ブランチ管理ＤＢに格納されているブランチ管理テーブルに前記リポジトリ情報として登録されていない新規懸案事項が存在するか否かを判別し、新規懸案事項が存在する場合には、前記バージョン管理システムに、前記リポジトリＤＢに格納されているトランクリポジトリを派生元として前記新規懸案事項に対応するブランチリポジトリを作成させるとともに、前記新規懸案情報と派生元の前記トランクリポジトリと作成された前記ブランチリポジトリとの関係を示すリポジトリ情報を前記ブランチ管理テーブルに登録するブランチ作成手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記リポジトリＤＢに格納されているブランチリポジトリに含まれるソースファイルを前記ユーザ端末の作業用フォルダに格納させるチェックアウト処理手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記作業用フォルダに格納されているソースファイルの変更内容を当該ソースファイルの取得元のブランチリポジトリに反映させるコミット処理手段と、
前記ブランチ管理テーブルに登録されているリポジトリ情報に基づいて、前記バージョン管理システムに、前記リポジトリＤＢに格納されているブランチリポジトリに含まれるソースファイルの変更内容を当該ブランチリポジトリの派生元であるトランクリポジトリに反映させるマージ処理手段と、
を備えることを特徴とする。
【００１０】
好ましくは、前記ブランチ管理テーブルに登録されるリポジトリ情報は、前記各懸案事項に付与された懸案ＩＤと、ブランチリポジトリＵＲＬと、ブランチ開始リビジョンと、派生元リポジトリＵＲＬとを含むことを特徴とする。
【００１１】
好ましくは、前記チェックアウト処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定された懸案ＩＤに対応するブランチリポジトリのチェックアウトを、前記ユーザ端末を用いてユーザによって指定された前記作業用フォルダに向けて実行させることを特徴とする。
【００１２】
好ましくは、前記コミット処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定された作業用フォルダに格納されているソースファイルの変更内容を当該ソースファイルの取得元のブランチリポジトリに反映させることを特徴とする。
【００１３】
好ましくは、前記マージ処理手段は、前記バージョン管理システムにコマンドを発行し、前記バージョン管理システムに、前記ユーザ端末を用いてユーザによって指定されたブランチリポジトリに含まれるソースファイルの変更内容を当該ブランチリポジトリの派生元であるトランクリポジトリに反映させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、既存のバージョン管理システムと既存の懸案管理システムを連携させることができ、懸案管理システムで管理している懸案事項を指定するだけで、懸案事項毎にブランチリポジトリを作成し、ソースを登録し、ブランチリポジトリを派生元のリポジトリへマージするといった操作をバージョン管理システムの仕組みを意識せず容易に行うことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るブランチリポジトリ管理システムを含むソフトウェア開発支援システムの構成の一例を示す図である。
【図２】ブランチリポジトリ管理システムを操作するクライアント画面の一例を示す図である。
【図３】ブランチ管理ＤＢの保持するブランチ管理テーブルのデータ構造の一例を示す図である。
【図４】ブランチ管理ＤＢの保持するブランチ管理テーブルに格納されているデータの一例を示す図である。
【図５】ブランチ作成部におけるブランチリポジトリ作成処理の流れの一例を示す図である。
【図６】ユーザ端末のブランチリポジトリ管理システムクライアントが行う作業用フォルダ登録処理の流れの一例を示す図である。
【図７】チェックアウト処理部が行うチェックアウト処理の流れの一例を示す図である。
【図８】コミット処理部におけるコミット処理の流れの一例を示す図である。
【図９】マージ処理部におけるマージ処理の流れの一例を示す図である。
【発明を実施するための形態】
【００１６】
図１は、本発明の実施形態に係るブランチリポジトリ管理システム１１０を含むソフトウェア開発支援システム１の構成の一例を示す。
ソフトウェア開発支援システム１は、バージョン管理システム１００と、懸案管理システム１０２と、本発明の実施形態に係るブランチリポジトリ管理システム１１０と、ユーザ端末１３０とで構成される。なお、バージョン管理システム１００は、Ｓｕｂｖｅｒｓｉｏｎ等の従来から知られている既存のものである。同様に、懸案管理システム１０２も従来から知られている既存のものである。
バージョン管理システム１００と、懸案管理システム１０２と、ブランチリポジトリ管理システム１１０と、ユーザ端末１３０とはネットワーク１０４に接続されており、相互に通信することができる。
【００１７】
バージョン管理システム１００は、コンピュータであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成されるメモリと、ハードディスク等で構成される記憶装置とを有する。バージョン管理システム１００のＣＰＵが、メモリに記憶されているバージョン管理プログラムを実行することにより、バージョン管理の機能が実現される。
バージョン管理システム１００の記憶装置は、リポジトリＤＢ（データベース）１０１を記憶する。
バージョン管理システム１００は、開発主流のトランクリポジトリ（派生元のリポジトリ）１４０を途中から派生させ、懸案事項毎にブランチリポジトリ１４２を生成することができる。リポジトリＤＢ１０１は、トランクリポジトリ１４０と、ブランチリポジトリ１４２とを格納する。トランクリポジトリ１４０には開発主流のソースファイル１４１が格納される。また、ブランチリポジトリ１４２には、トランクリポジトリ１４０に格納されているソースファイル１４１からコピーされ、懸案事項毎に変更を加えられるソースファイル１４３が格納される。
ブランチリポジトリ管理システム１１０はｈｔｔｐなどのネットワークプロトコルでトランクリポジトリ１４０およびブランチリポジトリ１４２をバージョン管理システム１００から参照することができる。
【００１８】
懸案管理システム１０２もコンピュータであり、ＣＰＵと、ＲＡＭ等で構成されるメモリと、ハードディスク等で構成される記憶装置とを有する。懸案管理システム１０２のＣＰＵが、メモリに記憶されている懸案管理プログラムを実行することにより懸案管理の機能が実現される。
懸案管理システム１０２の記憶装置は、懸案管理ＤＢ１０３を記憶する。懸案管理ＤＢ１０３は懸案事項１５０を格納する。各懸案事項１５０には、懸案事項毎に懸案管理システム１０２によって付与される一意のキーである懸案ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）が付される。
【００１９】
本発明の実施形態に係るブランチリポジトリ管理システム１１０もコンピュータであり、ＣＰＵと、ＲＡＭ等で構成されるメモリと、ハードディスク等で構成される記憶装置とを有する。ブランチリポジトリ管理システム１１０のＣＰＵが、メモリに記憶されているブランチリポジトリ管理プログラムを実行することにより、ブランチ作成部１１１と、チェックアウト処理部１１２と、コミット処理部１１３と、マージ処理部１１４との各機能が実現される。
ブランチリポジトリ管理システム１１０の記憶装置は、ブランチ管理ＤＢ１２０を記憶する。ブランチ管理ＤＢ１２０は、ブランチ管理テーブル１２１を格納する。ブランチ管理テーブル１２１には、後述するように、懸案管理ＤＢ１０３に格納されている懸案事項１５０と、リポジトリＤＢ１０１に格納されているトランクリポジトリ１４０およびブランチリポジトリ１４３との関係を示すリポジトリ情報が登録される。
ブランチリポジトリ管理システム１１０を利用するためには、初期状態としてトランクリポジトリ１４０とソースファイル１４１がバージョン管理システム１００によってリポジトリＤＢ１０１に格納されており、懸案事項１５０が懸案管理システム１０２によって懸案管理ＤＢ１０３に懸案発生毎に格納されることが前提となる。
【００２０】
ユーザ端末１３０もコンピュータであり、ＣＰＵと、ＲＡＭ等で構成されるメモリと、ハードディスク等で構成される記憶装置と、キーボードやマウス等で構成される入力装置と、ディスプレイ等で構成される表示装置とを有する。
ユーザ端末１３０のＣＰＵが、メモリに記憶されているブランチリポジトリ管理システムクライアントプログラムを実行することによりブランチリポジトリ管理システムクライアント１３３の機能が実現される。ブランチリポジトリ管理システムクライアント１３３は、記憶装置に作業用フォルダ１３１を作成するとともに、ブランチリポジトリ管理システム１１０を操作する。
ユーザ端末１３０の記憶装置には、ユーザによって指定されたパスに作業用フォルダ１３１が作成される、作業用フォルダ１３１には、バージョン管理システム１００のブランチリポジトリ１４２から取得したソースファイル１４３がソースファイル１３２として格納される。
【００２１】
以上の構成により、ブランチリポジトリ管理システム１１０は次のように処理を行う。
ブランチ作成部１１１は、ブランチリポジトリ管理システム１１０の起動後に懸案管理ＤＢ１０３を参照し、ブランチ管理ＤＢ１２０に格納されているブランチ管理テーブル１２１にリポジトリ情報として登録されていない新たな懸案事項が存在するか否かを確認する。新たな懸案事項がある場合には、バージョン管理システム１００を制御し、バージョン管理システム１００に、トランクリポジトリ１４０を派生元としてその懸案事項に対応するブランチリポジトリ１４２を作成させるとともに、ブランチ管理テーブル１２１に作成されたブランチリポジトリ１４２に関するリポジトリ情報を登録する。
チェックアウト処理部１１２は、バージョン管理システム１００を制御し、バージョン管理システム１００に、ブランチリポジトリ１４２に含まれるソースファイル１４３をソースファイル１３２としてユーザ端末１３０の作業用フォルダ１３１に格納させる。
コミット処理部１１３は、バージョン管理システム１００を制御し、バージョン管理システム１００に、作業用フォルダ１３１に格納されているソースファイル１３２の変更内容をブランチリポジトリ１４２に反映させる。
マージ処理部１１４は、バージョン管理システム１００を制御し、バージョン管理システム１００に、ブランチリポジトリ１４２に含まれるソースファイル１４３の変更内容を派生元であるトランクリポジトリ１４０に反映させる。
【００２２】
図２は、ブランチリポジトリ管理システム１１０を操作するクライアント画面２０１の一例を示す。
クライアント画面２０１は、ユーザ端末１３０の表示装置に表示される。クライアント画面２０１には、作業用フォルダ１３１のパスの入力欄２１０と、フォルダ登録ボタン２１１と、作業用フォルダ１３１のフォルダ構造を示すフォルダ構造画面２２０とがある。
ユーザが入力欄２１０に作業用フォルダ１３１のパスを指定してマウス等によりフォルダ登録ボタン２１１をクリックすると、ブランチリポジトリ管理システムクライアント１３３はフォルダ構造画面２２０を表示する。
図２のフォルダ構造画面２２０には、ルートフォルダである作業用フォルダ１３１の配下に懸案事項１５０の懸案ＩＤを名称とする懸案フォルダ２３１と懸案フォルダ２３２が存在し、懸案フォルダ２３１と懸案フォルダ２３２にそれぞれ懸案ＩＤがＰ００１のソースファイル１３２と懸案ＩＤがＰ００２のソースファイル１３２が格納されている場合の表示例が示されている。
【００２３】
ユーザが端末１３０のマウス等を用いて作業用フォルダ１３１を右クリックすると、ブランチリポジトリ管理システムクライアント１３３はチェックアウト実行画面２４０を表示する。
「チェックアウト」処理では、指定した懸案ＩＤに対するブランチリポジトリ１４２のソースファイル１４３を取得し作業用フォルダ１３１にソースファイル１３２として格納する。ユーザが懸案ＩＤ指定欄２４１に懸案ＩＤを指定し、ＯＫボタン２４２をクリックすると、ブランチリポジトリ管理システムクライアント１３３はチェックアウト実行画面２４０を閉じる。そして、ブランチリポジトリ管理システム１１０はチェックアウト処理部１１２を実行し、チェックアウト処理部１１２はチェックアウト処理を行う。キャンセルボタン２４３がクリックされた場合、ブランチリポジトリ管理システムクライアント１３３はチェックアウト実行画面２４０を閉じる以外に何も行わない。
例えば、作業用フォルダとしてC:\develop\workspace\projectAが指定され、懸案ＩＤとしてＰ００１が指定された場合は、作業用フォルダ１３１の配下に懸案フォルダ２３１が作成され、Ｐ００１に相当するブランチリポジトリ１４２の最新ソースファイルがソースファイル１３２として懸案フォルダ２３１に格納される。実際の取得処理は、チェックアウト処理部１１２がバージョン管理システム１００にコマンドを発行することで実現する。
【００２４】
ユーザが端末１３０のマウス等を用いて懸案フォルダ２３１（または懸案フォルダ２３１に格納されているソースファイル１３２）若しくは懸案フォルダ２３２（または懸案フォルダ２３２に格納されているソースファイル１３２）を右クリックすると、ブランチリポジトリ管理システムクライアント１３３はメニュー２５０を表示する。メニュー２５０には「コミット」と「マージ」がある。ユーザによって「コミット」が選択されると、ブランチリポジトリ管理システム１１０は、コミット処理部１１３を実行する。また、ユーザによって「マージ」が選択されると、ブランチリポジトリ管理システム１１０は、マージ処理部１１４を実行する。
【００２５】
「コミット」処理では、右クリックで指定された懸案フォルダに格納されているソースファイル１３２の変更内容を各ソースファイル１３２の取得元のブランチリポジトリ１４２へ反映する。「コミット」が選択されると、ブランチリポジトリ管理システム１１０はコミット処理部１１３を実行し、バージョン管理システム１００を制御することでコミット処理を行う。
例えば、作業用フォルダ１３１としてC:\develop\workspace\projectAが指定され、右クリックで懸案フォルダ２３１が指定されている場合は、Ｐ００１に対応する懸案フォルダ２３１に格納されているソースファイル１３２の変更内容がＰ００１に相当するブランチリポジトリ１４２に登録される。変更内容は、作業用フォルダ１３１に格納されているソースファイル１３２を取得した時点から実行時点（最新）までとする。実際の取得処理は、コミット処理部１１３がバージョン管理システム１００にコマンドを発行することで実現する。
【００２６】
「マージ」処理では、マージ処理部１１４は、バージョン管理システム１００に、右クリックで指定された懸案フォルダに格納されているソースファイル１３２の取得元であるブランチリポジトリ１４２の変更内容を派生元のトランクリポジトリ１４０に反映させる。「マージ」が選択されると、マージ処理部１１４を実行し、バージョン管理システム１００を制御することでマージ処理を行う。
例えば、作業用フォルダとしてC:\develop\workspace\projectAが指定され、右クリックでＰ００１に対応する懸案フォルダ２３１が指定されている場合は、Ｐ００１に対応するブランチリポジトリ１４２のソースファイル１４３の変更内容がトランクリポジトリ１４０に反映される。変更内容は、ブランチリポジトリ作成開始時点から実行時点（最新）までとする。実際の取得処理は、マージ処理部１１４がバージョン管理システム１００にコマンドを発行することで実現する。
【００２７】
図３は、ブランチ管理ＤＢ１２０の保持するブランチ管理テーブル１２１のデータ構造の一例を示す。
懸案ＩＤ３００は、懸案事項１５０に一意に付与される懸案ＩＤである。ブランチリポジトリＵＲＬ３０１は、懸案ＩＤに対してブランチ作成部１１１が作成したブランチリポジトリ１４２をネットワークプロトコルで参照できるＵＲＬである。ブランチ開始リビジョン３０２は、ブランチ作成部１１１がブランチを作成した時のリビジョンであり、ブランチ変更開始リビジョンになる。
【００２８】
ブランチ開始リビジョン３０２は、「コミット」および「マージ」時に変更内容の開始時点を指定するのに必要となる。ブランチリポジトリ管理システム１１０が制御できるバージョン管理システム１００は、ブランチリポジトリが作成される毎、およびコミット毎にリビジョンをリポジトリに付与するものとし、トランクリポジトリ１４０とブランチリポジトリ１４２に統一した一意のリビジョンを付与するものとする。
例えば、トランクリポジトリのリビジョンが２０のとき、懸案ＩＤＰ００１のブランチリポジトリを作成すると、Ｐ００１のブランチリポジトリには、リビジョン２１が割り振られる。そして、Ｐ００１のブランチリポジトリに変更を加える（コミットする）とリビジョンは２２、２３、２４となり、その時点で、次にＰ００２のブランチリポジトリを作成するとブランチリポジトリＰ００２にリビジョン２５が割り振られる。その後、Ｐ００２に変更を加える（コミットする）とリビジョンは２６、２７、２８となるが、その次にＰ００１のブランチリポジトリに変更を加えれば（コミットすれば）２９、３０とＰ００１にリビジョンが割り振られる。そして、その次にＰ００２のブランチリポジトリに変更を加える（コミットする）とリビジョンは３１、３２となる。この場合、懸案ＩＤＰ００１のリビジョンは２０〜２４と２９〜３０、その最新ソースファイルのリビジョンは３０となる。また、懸案ＩＤＰ００２のリビジョンは２５〜２８と３１〜３２、その最新ソースファイルのリビジョンは３２となる。このようにリビジョンはリポジトリ内で統一したＩＤで割り振られる。なお、この場合、上述したコミットおよびマージにおいて変更内容が登録または反映されるリビジョンは、懸案ＩＤＰ００１のブランチリポジトリではリビジョン２０〜リビジョン２４とリビジョン２９〜３０になり、懸案ＩＤＰ００２のブランチリポジトリではリビジョン２５〜２８とリビジョン３１〜３２になる。
派生元リポジトリＵＲＬ３０３は、ブランチリポジトリ１４２の派生元となるトランクリポジトリ１４０をネットワークプロトコルで参照できるＵＲＬである。
【００２９】
例えば、図４のデータ例では、懸案ＩＤがＰ００１であるブランチリポジトリは、ブランチリポジトリＵＲＬ４０１がhttp://vserv/repos/projectA/branches/P001であり、ブランチ作成時のリビジョンが２０であり、派生元リポジトリＵＲＬ３０３がhttp://vserv/repos/projectA/trunkである。
【００３０】
図５は、ブランチ作成部１１１におけるブランチリポジトリ作成処理の流れの一例を示す。
ブランチリポジトリ管理システム１１０を起動すると、ブランチ作成部１１１は懸案管理ＤＢ１０３に新しい懸案事項が登録されているか否かを判定する（Ｓ１０１）。具体的には、ブランチ管理ＤＢ１２０のブランチ管理テーブル１２１（図３、図４）に存在しない懸案ＩＤの懸案事項が懸案ＤＢ１０３に存在するか否かで判定する。
もし、存在しない懸案事項があれば新しい懸案事項が登録されていると判定し（Ｓ１０１：Ｙｅｓ）、該当の懸案ＩＤについて、ブランチ名を決定し、ブランチリポジトリを作成する（Ｓ１０２）。具体的には、まず、懸案ＩＤをブランチ名とする。ブランチリポジトリの派生元リポジトリであるトランクリポジトリ１４０は、ブランチリポジトリ管理システム１１０に初期値として場所を指すＵＲＬが設定されている。ブランチリポジトリ１４２のＵＲＬは、ブランチリポジトリ名とトランクリポジトリＵＲＬから決める。例えば、懸案ＩＤがＰ００１であり、トランクリポジトリＵＲＬがhttp://vserv/repos/projectA/trunkと初期値として与えられている場合、ブランチリポジトリ名はＰ００１となり、ブランチリポジトリＵＲＬはhttp://vserv/repos/projectA/branches/P001と決める（トランクリポジトリＵＲＬのtrunkをbranchesに置き換え、その後に/を付けてブランチ名を付ける）。
ブランチリポジトリを実際に作成するのはバージョン管理システム１００である。そのために、ブランチリポジトリ管理システム１１０は、バージョン管理システム１００にコマンドを発行する。コマンド内容についてはバージョン管理システム１００の仕様に従う。
【００３１】
バージョン管理システム１００によってブランチリポジトリ１４２が作成された後は、ブランチ管理テーブル１２１（図３、図４）に、懸案ＩＤ３００、ブランチリポジトリＵＲＬ３０１、ブランチ開始リビジョン３０２、派生元リビジョンＵＲＬ３０３を登録する（Ｓ１０３）。ブランチ開始リビジョン３０２は、ブランチ作成時にバージョン管理システム１００によって決められるので、バージョン管理システム１００に問い合わせることにより知ることができる。登録後は、ステップＳ１０１へ戻り処理を繰り返す。
ステップＳ１０１にて、新しい懸案事項が見つからなければ（Ｓ１０１：Ｎｏ）、見つかるまでステップＳ１０１を繰り返す。これは、懸案管理ＤＢ１０３を監視し続けることになる。
【００３２】
図６は、ユーザ端末１３０のブランチリポジトリ管理システムクライアント１３３が行う作業用フォルダ登録処理の流れの一例を示す。
図２に示したクライアント画面２０１の入力欄２１０に作業用フォルダのパスが入力され、フォルダ登録ボタン２１１がクリックされると、ブランチリポジトリ管理システムクライアント１３３は作業用フォルダ登録処理を開始する。
ブランチリポジトリ管理システムクライアント１３３は、まず入力欄２１０に入力されたパスで指定される作業用フォルダが記憶装置に存在するか否かを判定する（Ｓ２０１）。そして、ステップＳ２０１にて、入力されたパスで指定される作業用フォルダが存在しない場合（Ｓ２０１：Ｎｏ）、ブランチリポジトリ管理システムクライアント１３３は、入力されたパスに作業用フォルダ１３１を新規に作成する（Ｓ２０２）。
次に、ブランチリポジトリ管理システムクライアント１３３は、作業用フォルダ１３１をルートディレクトリとしてフォルダの構造をフォルダの階層構造一覧として図２のフォルダ構造画面２２０に示すように表示する（Ｓ２０３）。なお、ステップＳ２０２が実行され、作業用フォルダ１３１が新規に作成された場合には、ステップＳ２０３において、ルートディレクトリである作業用フォルダ１３１のみが表示される。
【００３３】
図７は、チェックアウト処理部１１２が行うチェックアウト処理の流れの一例を示す。
チェックアウトとは、リポジトリＤＢ１０１に格納されているソースファイルを取得し、ユーザ端末１３０の作業用フォルダ１３１に格納することである。
ユーザ端末１３０の表示装置に表示されているクライアント画面２０１で作業用フォルダ１３１が選択されると、チェックアウト画面２４０が表示される。チェックアウト画面２４０上で、懸案ＩＤ２４１が指定され、ＯＫボタン２４２が押されると、チェックアウト処理部１１２がチェックアウト処理を開始する。
チェックアウト処理部１１２は、まず、懸案ＩＤ指定欄２４１で指定された懸案ＩＤと一致する懸案ＩＤがブランチ管理テーブル１２１（図３、図４）に存在するか否かを判定する（Ｓ３０１）。これは、ブランチ管理テーブル１２１に存在していなければブランチリポジトリ管理システム１１０が管理していないブランチリポジトリであるためである。
【００３４】
ブランチ管理テーブル１２１に一致する懸案ＩＤが存在する場合（Ｓ３０１：Ｙｅｓ）、チェックアウト処理部１１２は、ユーザ端末１３０のネットワークアドレスを取得する（Ｓ３０２）。なお、ネットワークアドレスは、ｈｔｔｐなどのネットワークプロトコルでユーザ端末１３０にアクセスするためのものである。次に、チェックアウト処理部１１２は、ブランチ管理テーブル１２１から懸案ＩＤ３００が一致する行のブランチリポジトリＵＲＬ３０１を取得する（Ｓ３０３）。
そして、チェックアウト処理部１１２は、バージョン管理システム１００に、懸案ＩＤ３００とネットワークアドレスとブランチリポジトリＵＲＬ３０１とを含むコマンドを発行し、指定された懸案ＩＤをブランチ名とするブランチリポジトリ１４２のチェックアウト（最新のソースファイル１４３の取得）をユーザ端末１３０の作業用フォルダ１３１に向けて実行させる。（Ｓ３０４）。
【００３５】
バージョン管理システム１００は、コマンドを受け取ると、ネットワークアドレスで指定されるユーザ端末１３０に、懸案ＩＤ３００で指定されるブランチリポジトリ１４２に含まれる最新のソースファイル１４３を送信する。
ユーザ端末１３０のブランチリポジトリ管理システムクライアント１３３は、懸案ＩＤ指定欄２４１で指定された懸案ＩＤと同じ名称の懸案フォルダ２３１が存在しない場合には、その懸案フォルダ２３１を新たに作成し、受信したソースファイル１４３をソースファイル１３２として格納する。指定された懸案ＩＤ２５１と同じ名称の懸案フォルダ２３１が存在する場合には、既存の懸案フォルダ２３１に記憶されていたソースファイル１３２を消去し、取得されたソースファイル１４３を格納する（上書きする）。
【００３６】
例えば、作業用フォルダ１３１のパスの入力欄２１０にC:\develop\workspace\projectAが入力され、作業用フォルダ１３１が右クリックされ、懸案ＩＤ指定欄２４１にＰ００１が入力された場合、バージョン管理システム１００に対して、ブランチ名がＰ００１であるブランチリポジトリ１４２をチェックアウトしてソースファイル１４３をユーザ端末１３０に送信するように指示するコマンドを発行する。ブランチリポジトリ１４２のソースファイル１４３は実行時点の最新リビジョンを取得する。
ステップＳ３０１で一致する懸案ＩＤがブランチ管理テーブル１２１に存在しない場合（Ｓ３０１：Ｎｏ）には、チェックアウト処理を終了する。
【００３７】
図８は、コミット処理部１１３におけるコミット処理の流れの一例を示す。
コミットとは、チェックアウトで取得したソースファイルの変更内容をブランチリポジトリに反映することである。
ユーザ端末１３０の表示装置に表示されているクライアント画面２０１で、懸案フォルダ２３１、懸案フォルダ２３１に格納されているソースファイル１３２、懸案フォルダ２３２、または懸案フォルダ２３２に格納されているソースファイル１３２が選択され、右クリックメニュー２５０でコミットが選択されるとコミット処理部１１３がコミット処理を開始する。
例えば、懸案フォルダ２３１または懸案フォルダ２３１に格納されているソースファイル１３２が選択された場合は、図７のチェックアウト処理で懸案ＩＤがＰ００１であるブランチリポジトリ１４２から取得したソースファイル１４３に対する変更であると判定でき、コミットを実行できる。
【００３８】
コミット処理部１１３は、まず、ブランチ管理テーブル１２１（図３、図４）に、選択された懸案フォルダ（または選択されたソースファイル１３２が格納されている懸案フォルダ）の名称（すなわち、懸案ＩＤ）と一致する懸案ＩＤが存在するか否かを判定する（Ｓ４０１）。これは、ブランチ管理テーブル１２１に存在していなければブランチリポジトリ管理システム１１０が管理していないブランチリポジトリであるためである。
ブランチ管理テーブル１２１に一致する懸案ＩＤが存在する場合（Ｓ４０１：Ｙｅｓ）、コミット処理部１１３は、ユーザ端末１３０のネットワークアドレスを取得する（Ｓ４０２）。次に、コミット処理部１１３は、ブランチ管理テーブル１２１から懸案ＩＤ３００が一致する行のブランチリポジトリＵＲＬ３０１を取得する（Ｓ４０３）。
そして、コミット処理部１１３は、バージョン管理システム１００に、懸案ＩＤ３００とネットワークアドレスとブランチリポジトリＵＲＬ３０１とを含むコマンドを発行し、懸案ＩＤをブランチ名とするコミットを選択された懸案フォルダに向けて実行させる（Ｓ４０４）。コミット先であるブランチリポジトリはステップＳ４０３で取得したブランチリポジトリＵＲＬ３０１で指定される。
【００３９】
バージョン管理システム１００は、コマンドを受け取ると、ネットワークアドレスで指定されるユーザ端末１３０から送信されたソフトウェアを、懸案ＩＤ３００で指定されるブランチリポジトリ１４２に最新のソースファイル１４３として付け加える。
ステップＳ４０１でブランチ管理テーブル１２１に一致する懸案ＩＤが存在しない場合（Ｓ４０１：Ｎｏ）には、コミット処理を終了する。
【００４０】
図９は、マージ処理部１１４におけるマージ処理の流れの一例を示す。
マージとは、ブランチリポジトリ１４２のソースファイル１４３の変更内容を派生元のリポジトリにマージすることである。
懸案フォルダ２３１、懸案フォルダ２３１に格納されているソースファイル１３２、懸案フォルダ２３２、または懸案フォルダ２３２に格納されているソースファイル１３２が選択され、右クリックメニュー２５０でマージが選択されるとマージ処理部１１４がマージ処理を開始する。
マージ処理部１１４は、まず、ブランチ管理テーブル１２１（図３、図４）に、選択された懸案フォルダ（または選択されたソースファイル１３２が格納されている懸案フォルダ）の名称（すなわち、懸案ＩＤ）と一致する懸案ＩＤが存在するか否かを判定する（Ｓ５０１）。これは、ブランチ管理テーブル１２１に存在していなければブランチリポジトリ管理システム１１０が管理していないブランチリポジトリであるためである。
ブランチ管理テーブル１２１に一致する懸案ＩＤが存在する場合（Ｓ５０１：Ｙｅｓ）、マージ処理部１１４は、ブランチ管理テーブル１２１から懸案ＩＤ３００が一致する行のブランチリポジトリＵＲＬ３０１、ブランチ開始リビジョン３０２、派生元リポジトリＵＲＬ３０３を取得する（Ｓ５０２）。
そして、マージ処理部１１４は、バージョン管理システム１００にコマンドを発行し、マージを実行させる（Ｓ５０３）。コマンドに指定する項目としてマージ元、マージ元リポジトリの変更開始箇所（リビジョン）、マージ元リポジトリの変更終了箇所（リビジョン）、マージ先がある。マージ元は、ステップＳ５０２で取得したブランチリポジトリＵＲＬ３０１、変更開始箇所はステップＳ５０２で取得した変更開始リビジョン、変更終了箇所は実行時点の最新リビジョン、マージ先はステップＳ５０２で取得した派生元リポジトリＵＲＬ３０３を指定する。
ブランチ管理テーブル１２１に一致する懸案ＩＤが存在しない場合（Ｓ５０１：Ｎｏ）、マージ処理を終了する。
【００４１】
以上説明した本発明のブランチリポジトリ管理システムによれば、次のような効果がある。
（１）既存の懸案管理システムに懸案事項が登録されると、自動的に既存のリポジトリ管理システムへブランチリポジトリを作成するため、開発者はバージョン管理システムの仕組みを意識せずに容易にブランチリポジトリを作成できる。
（２）既存の懸案管理システムの懸案事項ごとにブランチリポジトリを管理しているため、開発者はバージョン管理システムの仕組みを意識せずに容易にブランチリポジトリからソースファイルを取得することができる。
（３）既存の懸案管理システムの懸案事項ごとにブランチリポジトリを管理しているため、開発者はバージョン管理システムの仕組みを意識せずに容易にブランチリポジトリへソースの変更内容を登録することができる。
（４）既存の懸案管理システムの懸案事項ごとにブランチリポジトリを管理しているため、開発者はバージョン管理システムの仕組みを意識せずに容易にブランチリポジトリの変更内容を派生元のリポジトリへマージすることができる。
【符号の説明】
【００４２】
１００…バージョン管理システム、１０１…リポジトリＤＢ、１０２…懸案管理システム、１０３…懸案管理ＤＢ、１１０…ブランチリポジトリ管理システム、１１１…ブランチ作成部、１１２…チェックアウト処理部、１１３…コミット処理部、１１４…マージ処理部、１２０…ブランチ管理ＤＢ、１２１…ブランチ管理テーブル、１３０…ユーザ端末、１３１…作業用フォルダ、１３２…作業用フォルダ内ソースファイル、１３３…ブランチリポジトリ管理システムクライアント、１４０…トランクリポジトリ、１４１…トランクリポジトリ内ソースファイル、１４２…ブランチリポジトリ、１４３…ブランチリポジトリ内ソースファイル
【図１】
2013191003.tif 000003
【図２】
2013191003.tif 000004
【図３】
2013191003.tif 000005
【図４】
2013191003.tif 000006
【図５】
2013191003.tif 000007
【図６】
2013191003.tif 000008
【図７】
2013191003.tif 000009
【図８】
2013191003.tif 000010
【図９】
2013191003.tif 000011