(57)【要約】【課題】マージされたファイルのデグレード発生の危険を検査して、利用者に警告することができるファイル検査装置を提供する。【解決手段】共通親コミット１０とマージ元コミット２とマージ先コミット４とを３−Ｗａｙマージしたマージコミット５をコミット格納部１１０に格納する３−Ｗａｙマージ部１２０と、共通親コミット１０に連結されている複数の第１のファイルと、共通親コミット１０に連結されている複数の第２のファイルとを、３−Ｗａｙマージとは異なる方式をよりマージし、マージ順番実行結果１４５を生成するマージ順番実行部１４０と、コミット格納部１１０に格納されているマージコミット５とマージ順番実行結果１４５とを処理装置により比較し、差異があるか否かを判定するマージ順番実行結果比較部１６０と、差異を示す情報をマージコミット５の検査結果として表示装置に表示するマージ検査結果表示部１７０とを備える。【選択図】図３
2013257608.tif 000002
【特許請求の範囲】
【請求項１】
親ファイルの変更履歴として親ファイルから時系列に関連付けられている複数の第１のファイルと、
前記複数の第１のファイルと並行して、前記親ファイルから時系列に関連付けられている複数の第２のファイルと、
前記複数の第１のファイルと前記複数の第２のファイルとを、第１の方式によりマージした対象マージファイルと
を格納するファイル格納部を備え、前記ファイル格納部に格納されている前記対象マージファイルを検査するファイル検査装置において、
前記ファイル格納部に格納されている前記複数の第１のファイルと前記ファイル格納部に格納されている前記複数の第２のファイルとを、前記第１の方式とは異なる第２の方式をよりマージした検査用マージファイルを生成する検査用ファイル生成部と、
前記ファイル格納部に格納されている前記対象マージファイルと、前記検査用ファイル生成部により生成された前記検査用マージファイルとを処理装置により比較し、差異があるか否かを判定する差異判定部と、
前記差異判定部により差異があると判定された場合に、前記差異を示す情報を前記対象マージファイルの検査結果として表示装置に表示する表示部と
を備えることを特徴とするファイル検査装置。
【請求項２】
前記ファイル検査装置は、さらに、
前記複数の第１のファイルの各々と前記複数の第２のファイルの各々との全ファイルの順序付けを示す順序パターンを複数生成する順序パターン生成部を備え、
前記検査用ファイル生成部は、
前記複数の第１のファイルと前記複数の第２のファイルとを、前記順序パターン生成部により生成された前記複数の順序パターンの各順序パターンを用いた前記第２の方式によりマージし、複数の前記検査用マージファイルを生成する
ことを特徴とする請求項１に記載のファイル検査装置。
【請求項３】
前記ファイル格納部は、
前記第１の方式として、前記親ファイルと、前記複数の第１のファイルのうちの最新の第１のファイルと、前記複数の第２のファイルのうちの最新の第２のファイルとを用いた３方向マージ方式により、前記複数の第１のファイルと前記複数の第２のファイルとをマージした前記対象マージファイルを格納し、
前記順序パターン生成部は、
前記順序パターンであって、さらに、前記複数の第１のファイルの時系列と前記複数の第２のファイルの時系列とがそれぞれ保たれている前記順序パターンを複数生成し、
前記検査用ファイル生成部は、
前記第２の方式として、前記順序パターン生成部により生成された前記複数の順序パターンの各順序パターンが示す順序付けにしたがって順序付けされた複数のファイルを、先頭のファイルから最後尾のファイルまで前記順序付けの順で統合し、統合したファイルを前記検査用マージファイルとする
ことを特徴とする請求項２に記載のファイル検査装置。
【請求項４】
前記検査用ファイル生成部は、
前記順序付けされた複数のファイルの先頭のファイルから順に、当該ファイルと当該ファイルの次のファイルとを統合した統合ファイルを前記次のファイルに置き換える処理を、前記順序付けされたファイルの最後尾のファイルが前記次のファイルとなるまで繰り返した後、前記最後尾のファイルを前記検査用マージファイルとすることを特徴とする請求項３に記載のファイル検査装置。
【請求項５】
前記検査用ファイル生成部は、
前記順序付けされた複数のファイルの先頭のファイルから順に、当該ファイルと当該ファイルの次のファイルとを統合する際に、当該ファイルと当該ファイルの次のファイルとのファイルの順序が、前記複数の第１のファイルの時系列に含まれるファイルの順序であるか、あるいは前記複数の第２のファイルの時系列に含まれるファイルの順序であるかを判定し、前記複数の第１のファイルの時系列に含まれるファイルの順序であるか、あるいは前記複数の第２のファイルの時系列に含まれるファイルの順序である場合には、前記次のファイルを前記統合ファイルとすることを特徴とする請求項４に記載のファイル検査装置。
【請求項６】
前記検査用ファイル生成部は、
前記ファイルの順序が、前記複数の第１のファイルの時系列に含まれるファイルの順序でなく、かつ、前記複数の第２のファイルの時系列に含まれるファイルの順序でないと判定した場合には、当該ファイルと当該ファイルの次のファイルとを前記第１の方式でマージし、マージしたファイルを前記統合ファイルとすることを特徴とする請求項５に記載のファイル検査装置。
【請求項７】
前記親ファイルと前記複数の第１のファイルの各ファイルと前記複数の第２のファイルの各ファイルと前記マージファイルとは、それぞれ複数のパラメータ名と各パラメータ名に対応するパラメータ値とを含み、
前記ファイル検査装置は、さらに、
前記親ファイルの各パラメータ名のパラメータ値と、前記マージファイルの各パラメータ名のパラメータ値とを比較し、同一のパラメータ名であり、かつ、パラメータ値が異なるパラメータ名を不一致パラメータ名として検出する不一致パラメータ名検出部を備え、
前記差異判定部は、
前記不一致パラメータ名検出部により検出された前記不一致パラメータ名を入力し、前記マージファイルに含まれる前記不一致パラメータ名に対応するパラメータ値と、前記複数の検査用ファイルの各検査用ファイルに含まれる前記不一致パラメータ名に対応するパラメータ値との間に差異があるか否かを判定する
ことを特徴とする請求項１〜６のいずれかに記載のファイル検査装置。
【請求項８】
親ファイルの変更履歴として親ファイルから時系列に関連付けられている複数の第１のファイルと、
前記複数の第１のファイルと並行して、前記親ファイルから時系列に関連付けられている複数の第２のファイルと、
前記複数の第１のファイルと前記複数の第２のファイルとを、第１の方式によりマージした対象マージファイルと
を格納するファイル格納部を備え、前記ファイル格納部に格納されている前記対象マージファイルを検査するファイル検査装置のファイル検査方法において、
検査用ファイル生成部が、前記ファイル格納部に格納されている前記複数の第１のファイルと前記ファイル格納部に格納されている前記複数の第２のファイルとを、前記第１の方式とは異なる第２の方式をよりマージした検査用マージファイルを生成する検査用ファイル生成工程と、
差異判定部が、前記ファイル格納部に格納されている前記対象マージファイルと、前記検査用ファイル生成工程により生成された前記検査用マージファイルとを処理装置により比較し、差異があるか否かを判定する差異判定工程と、
表示部が、前記差異判定工程により差異があると判定された場合に、前記差異を示す情報を前記対象マージファイルの検査結果として表示装置に表示する表示工程と
を備えることを特徴とするファイル検査装置のファイル検査方法。
【請求項９】
親ファイルの変更履歴として親ファイルから時系列に関連付けられている複数の第１のファイルと、
前記複数の第１のファイルと並行して、前記親ファイルから時系列に関連付けられている複数の第２のファイルと、
前記複数の第１のファイルと前記複数の第２のファイルとを、第１の方式によりマージした対象マージファイルと
を格納するファイル格納部を備え、前記ファイル格納部に格納されている前記対象マージファイルを検査するファイル検査装置のファイル検査プログラムにおいて、
検査用ファイル生成部が、前記ファイル格納部に格納されている前記複数の第１のファイルと前記ファイル格納部に格納されている前記複数の第２のファイルとを、前記第１の方式とは異なる第２の方式をよりマージした検査用マージファイルを生成する検査用ファイル生成ステップと、
差異判定部が、前記ファイル格納部に格納されている前記対象マージファイルと、前記検査用ファイル生成ステップにより生成された前記検査用マージファイルとを処理装置により比較し、差異があるか否かを判定する差異判定ステップと、
表示部が、前記差異判定ステップにより差異があると判定された場合に、前記差異を示す情報を前記対象マージファイルの検査結果として表示装置に表示する表示ステップと
をコンピュータである前記ファイル検査装置に実行させるためのファイル検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ファイルのバージョン管理におけるファイル検査装置及びファイル検査方法及びファイル検査プログラムに関するものである。本発明は、特に、ファイル検査方式に関するものである。
【背景技術】
【０００２】
ファイルのバージョン管理とは、ファイルを編集することによって発生する履歴を記録し、後から古いバージョンを取り出したり、バージョン間の差分を参照できたりする仕組みである。バージョン管理では、ファイルのある時点の内容を「コミット」と呼び、各時点のコミットは履歴として連結している。あるコミットから別の履歴を作成することを「ブランチする」と呼ぶ。
【０００３】
複数人が１つのファイルを別々に編集すると、１つのファイルに対して複数のコミットができる。２つのコミットから、各々の編集結果を反映して、ひとつのコミットにすることを「マージ」、マージした結果を「マージコミット」と呼ぶ。マージには複数方式があるが、「３−Ｗａｙマージ」（Ｔｈｒｅｅ−Ｗａｙ・Ｍｅｒｇｅ、３−Ｗａｙ・Ｍｅｒｇｅ、３方向マージ、３方マージ）が一般的である。３−Ｗａｙマージとは、マージコミットの各部分（例えば各行）の内容を、マージ先コミットとマージ元コミットとに共通する共通親コミットからの差分で決定する方式である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１−５０８３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の３−Ｗａｙマージ方式では、自動でマージした結果、新しい編集結果を古い編集結果で上書きするデグレードが発生する危険があり、更にそのことが利用者には分からないという課題があった。
【０００６】
上記課題は、以下のような理由により生じるものである。３−Ｗａｙマージ方式では、マージ元コミットあるいはマージ先コミットの内容が共通親コミットの内容と同じである場合は編集されていなかったと仮定して、共通親コミットと異なる内容を採用して上書きする。しかし、マージ元コミットあるいはマージ先コミットが共通親コミットの内容を変更して、更にあえて内容を元に戻し、これが新しい編集結果である場合、３−Ｗａｙマージ方式では、共通親コミットを変更したという古い編集結果でマージコミットを作成してしまう。このため、元に戻したという新しい編集結果が失われてしまう。更にこのことを自動で実行するため、新しい編集結果が失われたか否かも利用者には分からない。
【０００７】
本発明は、上記のような課題を解決するためになされもので、３−Ｗａｙマージ方式では検出できなかったデグレード発生の危険を検査して、利用者に報告することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るファイル検査装置は、
親ファイルの変更履歴として親ファイルから時系列に関連付けられている複数の第１のファイルと、
前記複数の第１のファイルと並行して、前記親ファイルから時系列に関連付けられている複数の第２のファイルと、
前記複数の第１のファイルと前記複数の第２のファイルとを、第１の方式によりマージした対象マージファイルと
を格納するファイル格納部を備え、前記ファイル格納部に格納されている前記対象マージファイルを検査するファイル検査装置において、
前記ファイル格納部に格納されている前記複数の第１のファイルと前記ファイル格納部に格納されている前記複数の第２のファイルとを、前記第１の方式とは異なる第２の方式をよりマージした検査用マージファイルを生成する検査用ファイル生成部と、
前記ファイル格納部に格納されている前記対象マージファイルと、前記検査用ファイル生成部により生成された前記検査用マージファイルとを処理装置により比較し、差異があるか否かを判定する差異判定部と、
前記差異判定部により差異があると判定された場合に、前記差異を示す情報を前記対象マージファイルの検査結果として表示装置に表示する表示部と
を備えることを特徴とする。
【発明の効果】
【０００９】
本発明に係るファイル検査装置は、親ファイルの変更履歴として親ファイルから時系列に関連付けられている複数の第１のファイルと、前記複数の第１のファイルと並行して、前記親ファイルから時系列に関連付けられている複数の第２のファイルと、前記複数の第１のファイルと前記複数の第２のファイルとを、第１の方式によりマージした対象マージファイルとを格納するファイル格納部を備え、前記ファイル格納部に格納されている前記対象マージファイルを検査するファイル検査装置において、前記ファイル格納部に格納されている前記複数の第１のファイルと前記ファイル格納部に格納されている前記複数の第２のファイルとを、前記第１の方式とは異なる第２の方式をよりマージした検査用マージファイルを生成する検査用ファイル生成部と、前記ファイル格納部に格納されている前記対象マージファイルと、前記検査用ファイル生成部により生成された前記検査用マージファイルとを処理装置により比較し、差異があるか否かを判定する差異判定部と、前記差異判定部により差異があると判定された場合に、前記差異を示す情報を前記対象マージファイルの検査結果として表示装置に表示する表示部とを備えるので、第１の方式によりマージされた対象マージファイルのデグレード発生の危険を検査して、検査結果を表示装置に表示することにより利用者に報告することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】バージョン管理方式及び３−Ｗａｙマージ方式について説明するための図である。
【図２】３−Ｗａｙマージ方式におけるデグレードの発生を説明するための図である。
【図３】実施の形態１に係るマージ検査装置１００の構成を示すブロック図である。
【図４】実施の形態１に係るマージ検査装置１００のハードウェア資源の一例を示す図である。
【図５】実施の形態１に係るマージ順番組合せ生成処理を示すフローチャート図である。
【図６】実施の形態１に係るツリー構造生成処理を示すフローチャート図である。
【図７】実施の形態１に係るマージ順番組合せ生成処理の入出力を示す図である。
【図８】実施の形態１に係るマージ順番組合せ生成処理により生成されたマージ順番キューを示す図である。
【図９】実施の形態１に係るマージ順番実行部のマージ順番実行処理のフローチャート図である。
【図１０】実施の形態１に係るマージ順番実行部のマージ順番実行処理を説明するための図である。
【図１１】実施の形態１に係るマージ順番実行結果比較部のマージ順番実行結果比較処理を説明するための図である。
【図１２】実施の形態２に係るマージ検査装置１０１の構成を示すブロック図である。
【図１３】実施の形態２に係る不一致パラメータ検出部の不一致パラメータ検出処理を説明するための図である。
【図１４】実施の形態２に係るパラメータマージ実行部のパラメータマージ実行処理のフローチャート図である。
【図１５】実施の形態２に係るパラメータマージ実行部のパラメータマージ実行処理を説明するための図である。
【図１６】実施の形態２に係るパラメータマージ結果比較部のパラメータマージ結果比較処理を説明するための図である。
【図１７】実施の形態２に係るパラメータマージ検査結果表示部のパラメータマージ検査結果表示処理を説明するための図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
まず、本実施の形態の前提となるファイルのバージョン管理について図１〜図２を用いて説明する。
【００１２】
図１は、バージョン管理方式及び３−Ｗａｙマージ方式について説明するための図である。図２は、３−Ｗａｙマージ方式におけるデグレードの発生を説明するための図である。
【００１３】
ファイルのバージョン管理とは、ファイルを編集することによって発生する履歴を記録して、後から古いバージョンを取り出したり、バージョン間の差分を参照できたりする仕組みである。バージョン管理では、ファイルのある時点の内容を「コミット」と呼び、各時点のコミットは履歴として連結している。あるコミットから別の履歴を作成することを「ブランチする」と呼ぶ。
【００１４】
図１では、内容１０を有するファイルＡのコミット１０（共通親コミット１０）が編集され、内容１を有するファイルＡのコミット１が生成され、コミット１の内容１が編集され内容２を有するファイルＡのコミット２が生成されている。また、コミット１０はブランチ作成され編集され、内容３を有するファイルＡのコミット３が作成され、コミット３の内容３が編集され内容４を有するファイルＡのコミット４が生成されている。
【００１５】
複数人が１つのファイル（例えば、図１のファイルＡ）を別々に編集すると、１つのファイルに対して複数のコミットができる。２つのコミットから、各々の編集結果を反映して、ひとつのコミットにすることを「マージ」と呼び、マージした結果を「マージコミット」と呼ぶ。
【００１６】
マージ方式は複数あり、例えば、「３−Ｗａｙマージ」（Ｔｈｒｅｅ・Ｗａｙ・Ｍｅｒｇｅ、３−Ｗａｙ・Ｍｅｒｇｅ、３方向マージ、３方マージ）がある。３−Ｗａｙマージとは、マージコミットの各部分（例えば各行）の内容を、マージ先コミットとマージ元コミットに共通する共通親コミットからの差分で決定する方式である。
【００１７】
図１に示すように、マージ元コミットをコミット２とし、マージ先コミットをコミット４とする。マージ先コミットのコミット４と、マージ元コミットのコミット２とに共通するコミットは共通親コミット１０である。図１の３−Ｗａｙマージを示す表を用いて、３−Ｗａｙマージにより、コミット２とコミット４とをマージし、内容５を有するファイルＡのマージコミット５を生成する場合について説明する。
【００１８】
図１の表の「場合１」のように、共通親コミット１０の内容１０は「あ」で、マージ元コミットのコミット２の内容２とマージ先コミットのコミット４の内容４とが、ともに「あ」であれば、コミット２とコミット４をマージしたマージコミット５の内容５は「あ」のままである。また、「場合２」のように、共通親コミット１０の内容１０は「あ」で、マージ元コミットのコミット２は「あ」であり、マージ先コミットのコミット４は「い」であれば、コミット２には変更がないと仮定し、コミット４で変更したと判断されてマージコミット５は「い」となる。「場合３」の場合も、「場合２」と同様にマージコミット５は「い」となる。
【００１９】
また、「場合４」のように、共通親コミット１０は「あ」で、マージ元コミットのコミット２とマージ先コミットのコミット４とが、ともに「い」であれば、マージコミット５は「い」となる。
【００２０】
そして、「場合５」のように、共通親コミット１０は「あ」で、マージ元コミットのコミット２は「い」で、マージ先コミットのコミット４は「う」である場合には、競合が発生したとして利用者の手作業で解決することになる。
【００２１】
図２は、３−Ｗａｙマージ方式によりデグレードが発生した状態を示している。３−Ｗａｙマージ方式では、自動でマージした結果、新しい編集結果を古い編集結果で上書きするデグレードが発生する危険があり、更にそのことが利用者には分からない。
【００２２】
３−Ｗａｙマージ方式では、上述したようにマージ元コミットあるいはマージ先コミットの内容が共通親コミットの内容と同じである場合は編集されていなかったと仮定して、共通親コミットと異なる内容を採用して上書きする。しかし、マージ元コミットあるいはマージ先コミットが共通親コミットの内容を変更して、更にあえて内容を元に戻し、これが新しい編集結果である場合、３−Ｗａｙマージ方式では、共通親コミットを変更したという古い編集結果でマージコミットを作成してしまう。このため、元に戻したという新しい編集結果が失われてしまう。更にこのことを自動で実行するため、新しい編集結果が失われたか否かも利用者には分からない。
【００２３】
図２において、各コミットのパラメータ「ｎｕｍ」に着目してみると、（１）の編集により「ｎｕｍ＝２」がコミット１では「ｎｕｍ＝４」となり、（２）でブランチされたコミット３では「ｎｕｍ＝２」のままである。（３）の編集により、コミット３の「ｎｕｍ＝２」がコミット４では「ｎｕｍ＝４」となっている。
【００２４】
また、（４）の編集により、コミット１の「ｎｕｍ＝４」が、コミット２では「ｎｕｍ＝２」に戻っている。ここで、マージ元コミット２とマージ先コミット４とを３−Ｗａｙマージすると、コミット２の「ｎｕｍ＝２」は（４）の編集であえて戻した値にもかかわらず、共通親コミット１０の「ｎｕｍ＝２」から変更していないと仮定されてしまう。したがって、マージコミット５は「ｎｕｍ＝４」となり、（４）の編集が失われてしまう。また、（４）の編集が失われているというデグレードが発生していることは利用者にもわからなくなってしまう。
【００２５】
本実施の形態に係るマージ検査装置１００（ファイル検査装置の一例）では、マージコミット５におけるデグレードの発生の危険性を検査し、利用者に報告するためのものである。
【００２６】
図３は、本実施の形態に係るマージ検査装置１００の構成を示すブロック図である。
【００２７】
図３において、マージ検査装置１００は、コミット格納部１１０、３−Ｗａｙマージ部１２０、マージ順番組合せ生成部１３０、マージ順番実行部１４０、マージ順番実行結果格納部１５０、マージ順番実行結果比較部１６０、マージ検査結果表示部１７０を備える。
【００２８】
また、図示していないが、マージ検査装置１００は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアはマージ検査装置１００の各部によって利用される。例えば、処理装置は、マージ検査装置１００の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
【００２９】
コミット格納部１１０は、全てのコミットを格納する構成要素である。
【００３０】
例えば、コミット格納部１１０は、図１に示す共通親コミット１０（親ファイル）と、共通親コミット１０の変更履歴として共通親コミット１０から時系列に関連付けられているコミット１及びコミット２（複数の第１のファイルの一例）と、コミット１及びコミット２と並行して、共通親コミット１０（共通親ファイル）から時系列に関連付けられているコミット３及びコミット４（複数の第２のファイルの一例）とを格納する。また、コミット格納部１１０は、コミット１及びコミット２（複数の第１のファイルの一例）とコミット１及びコミット２（複数の第１のファイルの一例）とを、３−Ｗａｙマージ部１２０による３−Ｗａｙマージ方式（第１の方式の一例）によりマージしたマージコミット５（対象マージファイルの一例）を格納する（図１参照）。本実施の形態に係るマージ検査装置１００は、このマージコミット５（対象マージファイルの一例）を検査対象として検査する装置である。
【００３１】
３−Ｗａｙマージ部１２０は、３−Ｗａｙマージを実行する構成要素である。
【００３２】
例えば、３−Ｗａｙマージ部１２０は、共通親コミット１０と、コミット１及びコミット２（複数の第１のファイル）のうちの最新のコミット２と、コミット３及びコミット４（複数の第２のファイル）のうちの最新のコミット４とを用いた３方向マージ方式により、コミット１及びコミット２とコミット３及びコミット４とをマージする。そして、３−Ｗａｙマージ部１２０は、マージした結果をマージコミット５としてコミット格納部１１０に格納する。
【００３３】
マージ順番組合せ生成部１３０は、共通親コミットからマージ元とマージ先との各コミットまでの起こり得るマージの順番の組合せを生成する構成要素である。
【００３４】
例えば、マージ順番組合せ生成部１３０は、コミット格納部１１０から、共通親コミット１０と、コミット１及びコミット２と、コミット３及びコミット４とから構成されるコミットリスト１１１（図７参照）を入力する。マージ順番組合せ生成部１３０は、入力したコミットリスト１１１の内容に基づいて、コミット１及びコミット２の各々と、コミット３及びコミット４の各々との全コミットの順序付けを示すマージ順番の組合せ（順序パターンの一例）を、複数生成する。マージ順番組合せ生成部１３０は、順序パターン生成部の一例である。
【００３５】
マージ順番組合せ生成部１３０は、さらに、コミット１及びコミット２（複数の第１のファイル）の時系列と、コミット３及びコミット４（複数の第２のファイル）の時系列とがそれぞれ保たれるようにマージ順番の組合せ（マージ順番組合せ１３５）を複数生成する。マージ順番組合せ生成部１３０は、マージ順番組合せ１３５を生成するための処理としてツリー構造生成部１３８によるツリー構造生成処理を実行する。マージ順番組合せ生成部１３０によるコミットのマージ順番組合せ１３５の生成方法については後述する。
【００３６】
マージ順番実行部１４０は、生成されたマージ順番組合せ１３５にしたがって全コミットについてファイルマージを繰り返し実行する構成要素である。
【００３７】
例えば、マージ順番実行部１４０は、コミット１及びコミット２（複数の第１のファイル）と、コミット３及びコミット４（複数の第２のファイル）との全コミットを、３−Ｗａｙマージ方式（第１の方式）とは異なる第２の方式によりマージし、マージ順番実行結果１４５（検査用マージファイル）を生成する。マージ順番実行部１４０は、検査用ファイル生成部の一例である。
【００３８】
マージ順番実行部１４０は、コミット１及びコミット２（複数の第１のファイル）と、コミット３及びコミット４（複数の第２のファイル）との全コミットを、マージ順番組合せ生成部１３０により生成されたマージ順番組合せ１３５を用いた第２の方式によりマージし、複数のマージ順番実行結果１４５を生成する。
【００３９】
さらに、具体的には、マージ順番実行部１４０は、複数のマージ順番組合せ１３５の各マージ順番組合せ１３５が示す順序付けにしたがって順序付けされた全コミットを、先頭のコミットから最後尾のコミットまで順序付けの順で統合し、統合したファイルをマージ順番実行結果１４５とする方式により、マージ順番実行結果１４５を得る。
【００４０】
マージ順番実行結果格納部１５０は、マージ順番組合せ１３５毎にマージ順番実行部１４０により生成されたマージ順番実行結果１４５を記憶装置に格納する構成要素である。
【００４１】
マージ順番実行結果比較部１６０は、３−Ｗａｙマージ結果と異なるマージ順番実行結果を検出する構成要素である。
【００４２】
例えば、マージ順番実行結果比較部１６０は、コミット格納部１１０に格納されているマージコミット５と、マージ順番実行結果格納部１５０に格納されている複数（あるいはひとつ）のマージ順番実行結果１４５とを処理装置により比較し、差異があるか否かを判定する。マージ順番実行結果比較部１６０は、差異判定部の一例である。
【００４３】
マージ検査結果表示部１７０は、３−Ｗａｙマージ結果とは異なるマージ結果を表示する構成要素である。
【００４４】
例えば、マージ検査結果表示部１７０（表示部）は、マージ順番実行結果比較部１６０により差異があると判定された場合に、差異を示す情報を検査対象のマージコミット５の検査結果として表示装置に表示する。差異を示す情報としては、例えば、差異があると判定されたマージ順番実行結果１４５と、検査対象のマージコミット５とを並べて比較し易くした情報等である。
【００４５】
次に、本実施の形態に係るマージ検査装置１００のハードウェア構成例について説明する。図４は、本実施の形態に係るマージ検査装置１００のハードウェア資源の一例を示す図である。なお、図４の構成は、あくまでもマージ検査装置１００のハードウェア構成の一例を示すものであり、マージ検査装置１００のハードウェア構成は図４に記載の構成に限らず、他の構成であってもよい。
【００４６】
図４において、マージ検査装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
【００４７】
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
【００４８】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
【００４９】
本実施の形態で説明した「コミット格納部」、「マージ順番実行結果格納部」は、ＲＡＭ９１４、ＲＯＭ９１３、磁気ディスク装置９２０等により実現される。
【００５０】
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００５１】
通信ボード９１５は、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００５２】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００５３】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００５４】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ・Ｉｎｐｕｔ・Ｏｕｔｐｕｔ・Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。マージ検査装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００５５】
上記プログラム群９２３には、本実施の形態の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００５６】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の判別」、「〜の比較」、「〜の参照」、「〜の抽出」、「〜の指定」、「〜の特定」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
【００５７】
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５８】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
【００５９】
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、マージ検査装置１００の動作をデータ処理方法として捉えることができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００６０】
このように、本実施の形態に示すマージ検査装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【００６１】
次に、本実施の形態に係るマージ検査装置１００のマージ検査方法の概要について説明する。
【００６２】
図５は、本実施の形態に係るマージ順番組合せ生成処理を示すフローチャート図である。図６は、本実施の形態に係るツリー構造生成処理を示すフローチャート図である。図７は、本実施の形態に係るマージ順番組合せ生成処理の入出力を示す図である。図８は、本実施の形態に係るマージ順番組合せ生成処理により生成されたマージ順番キューを示す図である。
【００６３】
図３に示すように、３−Ｗａｙマージ部１２０は、コミット格納部１１０（ファイル格納部）からマージ元のコミット２（最新の第１のファイルの一例）と、マージ先のコミット４（最新の第２のファイルの一例）と、共通親コミット１０（親ファイルの一例）とを入力してマージコミット５（対象マージファイルの一例）を生成し、コミット格納部１１０に出力する。
【００６４】
３−Ｗａｙマージ部１２０が出力したマージコミット５に、デグレードが含まれる危険があるかを検査するマージ検査装置１００の動作の概要を説明する。マージ順番組合せ生成部１３０は、コミット格納部１１０から、マージ元のコミット２とマージ先のコミット４と共通親コミット１０とを含む全コミットのリスト（コミットリスト１１１）を入力する。
【００６５】
図７に示すように、コミットリスト１１１は、共通親コミット１０の変更履歴として時系列に関連付けられているコミット１とコミット２（複数の第１のファイルの一例）と、コミット１とコミット２（複数の第１のファイルの一例）とに並行して、共通親コミット１０からブランチされ時系列に関連付けられているコミット３とコミット４（複数の第２のファイルの一例）とから構成される。
【００６６】
マージ順番組合せ生成部１３０は、コミットリスト１１１において、各コミットの起こり得るマージの順番の組合せ（マージ順番組合せ１３５（順序パターン））を生成する（マージ順番組合せ生成処理）。
【００６７】
マージ順番実行部１４０は、マージ順番組合せ生成部１３０により生成されたマージ順番組合せ１３５にしたがって、コミット格納部１１０からコミットを取り出してファイルマージを繰り返して、マージ結果をマージ順番実行結果１４５としてマージ順番実行結果格納部１５０に格納する（マージ順番実行結果生成・格納処理）。
【００６８】
マージ順番実行結果比較部１６０は、３−Ｗａｙマージ結果であるマージコミット５と異なるマージ順番実行結果１４５を検出して、マージ検査結果表示部１７０に出力する（マージ順番結果比較処理）。
【００６９】
次に、図５〜８を用いて、マージ検査装置１００のマージ順番組合せ生成処理について説明する。
【００７０】
Ｓ１０１において、マージ順番組合せ生成部１３０は、コミット格納部１１０から共通親コミット１０を抽出する。Ｓ１０２において、マージ順番組合せ生成部１３０は、共通親コミット１０をメモリ等の作業領域のツリー構造のルートに設定する。また、Ｓ１０３において、マージ順番組合せ生成部１３０は、共通親コミット１０をツリー構造のカレントに設定する。
【００７１】
つまり、Ｓ１０１〜Ｓ１０３において、マージ順番組合せ生成部１３０は、図７に示すように、ツリー構造のルートに共通親コミット１０を設定し、この共通親コミット１０をカレントとする。
【００７２】
次に、Ｓ１０４において、マージ順番組合せ生成部１３０は、ツリー構造生成処理を呼び出す。
【００７３】
図６を用いて、ツリー構造生成処理を実行するのはツリー構造生成部１３８（ツリー構造生成プログラム）である。
【００７４】
Ｓ２０１において、ツリー構造生成部１３８は、コミット格納部１１０からカレントの次に起こりえるコミットを抽出する。上述したように、マージ順番組合せ１３５は、コミット１及びコミット２の時系列と、コミット３及びコミット４の時系列とを保つように全コミットを組み合わせた順序である。
【００７５】
Ｓ２０１において、ツリー構造生成部１３８は、コミット格納部１１０から、カレントの次に起こり得るコミットを抽出する。例えば、カレントが共通親コミット１０の場合、共通親コミット１０の次に起こりえるのはコミット１かコミット３となる。
【００７６】
Ｓ２０２において、次に起こり得るコミットが有る場合、Ｓ２０３において、ツリー構造生成部１３８は、そのコミットをカレントの子ノードとしてツリー構造に追加する。具体的には、図７に示すように、ツリー構造生成部１３８は、カレントである共通親コミット１０の子ノードとしてコミット１を追加する。
【００７７】
Ｓ２０４において、ツリー構造生成部１３８は、カレントを追加した子ノードに移動し、Ｓ２０５において、ツリー構造生成処理を再帰的に呼びだす。具体的には、ツリー構造生成部１３８は、カレントを共通親コミット１０からコミット１に移動し、コミット１の次に起こりえるコミットを設定するためにツリー構造生成処理を再帰的に呼びだす。
【００７８】
Ｓ２０２において、次に起こりえるコミットが無い場合、Ｓ２０６において、ツリー構造生成部１３８は、ツリー構造からカレントの上位のノードを抽出する。Ｓ２０７において、カレントの上位ノードがあれば、ツリー構造生成部１３８は、カレントを上位ノードに移動する。Ｓ２０７において、カレントの上位ノードが無ければ、ツリー構造生成部１３８は、処理を終了する。
【００７９】
ツリー構造生成部１３８は、Ｓ２０８でカレントを上位ノードに移動した後、Ｓ２０９においてツリー構造生成処理を再帰的に呼び出す。
【００８０】
ツリー構造生成部１３８は、ツリー構造生成処理の再帰呼出が全て完了して、最初のツリー構造生成処理の呼出からリターンすると、ツリー構造のリーフ毎に、ルートから遷移するコミットの順番をマージ順番Ａ〜Ｆとする。
【００８１】
具体的には、例えば、カレントがツリー構造の最上階のリーフの最後のコミット４である場合、Ｓ２０２において、ツリー構造生成部１３８は、コミット４の次に起こりえるコミットは無い（Ｓ２０２で無）と判定する。そして、ツリー構造生成部１３８は、カレントを上位ノードのコミット３に移動し、コミット４以外でコミット３の次に起こりえるコミットがあるか否か判定することを繰り返す。ツリー構造生成部１３８は、コミット１までカレントを上位に移動し、コミット１以外で次に起こりえるコミットがあるか否かを判定する。この場合、カレントのコミット１の次にはコミット３も起こりえるので、コミット１からコミット３へ分岐して、さらにツリー構造生成処理を繰り返す。
【００８２】
以上のように、ツリー構造生成部１３８は、図７にしめすツリー構造を完成する。図７の例では、６階層のリーフが完成し、各リーフについてマージ順番組合せ１３５（マージ順番Ａ〜Ｆ）が完成する。
【００８３】
図５に戻り、マージ順番組合せ処理の説明を続ける。
【００８４】
Ｓ１０５において、マージ順番組合せ生成部１３０は、ツリー構造のリーフの示すマージ順番組合せ１３５にしたがって、ルートから遷移するコミットを格納したマージ順番キューを生成する。具体的には、マージ順番組合せ生成部１３０は、図７に示す６階層のツリー構造のリーフ（マージ順番Ａ〜Ｆ）にしたがって、図８に示すように、マージ順番キューＡ〜Ｆの６つのマージ順番キューＡ〜Ｆを生成する。
【００８５】
以上で、マージ検査方法のマージ順番組合せ処理についての説明を終わる。
【００８６】
図９は、本実施の形態に係るマージ順番実行部のマージ順番実行処理のフローチャート図である。図１０は、本実施の形態に係るマージ順番実行部のマージ順番実行処理を説明するための図である。
【００８７】
次に、図９及び図１０を用いて、マージ順番実行部１４０のマージ順番実行処理について説明する。マージ順番実行処理は、マージ順番組合せ処理により生成されたマージ順番キューＡ〜Ｆを用いて、マージコミット５を検査するための検査用のファイルを生成する処理である。
【００８８】
Ｓ３０１において、マージ順番実行部１４０は、マージ順番組合せ生成部１３０が生成したマージ順番キューを抽出する。マージ順番実行部１４０は、抽出するマージ順番キューがない場合には（Ｓ３０２で無）、処理を終了する。マージ順番実行部１４０は、抽出するマージ順番キューが有る場合には（Ｓ３０２で有）、処理をＳ３０３に進める。
【００８９】
Ｓ３０３において、マージ順番実行部１４０は、抽出したマージ順番キューから先頭コミットをポップして、それをカレントに設定する。Ｓ３０４において、マージ順番実行部１４０は、ポップしたカレントのコミットから検証用ブランチを作成する。検証用ブランチとは、マージ順番実行部１４０が、マージ順番キューに基づいて生成するカレントのコミットから生成される履歴である。
【００９０】
Ｓ３０５において、マージ順番実行部１４０は、続いてマージ順番キューから先頭コミットをポップする。マージ順番実行部１４０は、ポップしたコミットが無い場合（Ｓ３０６で無）、マージの最終結果をマージ順番実行結果格納部１５０に出力し（Ｓ３０７）、処理をＳ３０１に戻し、次のマージ順番キューの処理を継続する。
【００９１】
マージ順番実行部１４０は、ポップしたコミットが有る場合（Ｓ３０６で有）、それをネクストに設定する（Ｓ３０８）。
【００９２】
Ｓ３０９において、マージ順番実行部１４０は、コミット格納部１１０に、カレントからネクストへの遷移が格納されているか否かを処理装置により判断する。Ｓ３０９において、マージ順番実行部１４０は、コミット格納部１１０に、カレントからネクストへの遷移が格納されていると判定した場合（Ｓ３０９でＹＥＳ）、検証用ブランチでネクストをコミットとして採用し（Ｓ３１０）、カレントをネクストに移動（Ｓ３１１）した後、Ｓ３０５に処理を戻し、マージ順番キューの次をポップして処理を継続する。
【００９３】
Ｓ３０９において、マージ順番実行部１４０は、コミット格納部１１０に、カレントからネクストへの遷移が格納されていないと判定した場合（Ｓ３０９でＮＯ）、マージ順番実行部１４０は、ネクストをカレントに３−Ｗａｙマージする（Ｓ３１２）。そして、マージ順番実行部１４０は、Ｓ３１２において新規作成したコミットをカレントに設定し（Ｓ３１３）、Ｓ３０５に戻り、マージ順番キューの次の先頭コミットをポップして処理を継続する。
【００９４】
図１０を用いて、マージ順番実行部１４０がマージ順番キューＡを抽出し、検証ブランチＡを生成する場合について説明する。
【００９５】
まず、マージ順番実行部１４０は、マージ順番組合せ生成部１３０が生成したマージ順番キューＡを抽出する。図１０の（１）に示すように、マージ順番実行部１４０は、抽出したマージ順番キューＡから先頭コミットである共通親コミット１０をポップして、それをカレントに設定する。Ｓ３０４において、マージ順番実行部１４０は、ポップしたカレントの共通親コミット１０から、検証用ブランチＡを作成する。検証用ブランチＡとは、マージ順番実行部１４０が、マージ順番キューＡに格納されているコミットの順番に、共通親コミット１０から履歴を生成して検査用のコミットを生成するものである。
【００９６】
図１０の（２）に示すように、マージ順番実行部１４０は、続いてマージ順番キューＡから先頭コミットであるコミット１をポップし、ポップしたコミット１をカレントである共通親コミット１０のネクストに設定する。
【００９７】
次に、マージ順番実行部１４０は、コミット格納部１１０に、カレントからネクストへの遷移が格納されているが否かを処理装置により判断する。図７のコミットリスト１１１には、共通親コミット１０からコミット１への遷移は存在する。したがって、マージ順番実行部１４０は、コミット格納部１１０に、カレントからネクストへの遷移が格納されていると判定し、検証用ブランチＡにおいてネクストであるコミット１を採用し、カレントをネクストであるコミット１に移動する。そして、マージ順番実行部１４０は、マージ順番キューＡの次のコミット２をポップして、コミット２をネクストに設定して処理を継続する（図１０の（３））。
【００９８】
カレントがコミット２であり、ネクストがコミット３となった場合、マージ順番実行部１４０は、コミット２からコミット３への遷移はコミットリスト１１１（図７参照）には存在しない遷移であると判断する。そして、マージ順番実行部１４０は、ネクストであるコミット３をカレントであるコミット２に３−Ｗａｙマージし、コミット３Ａを生成する（図１０の（４））。そして、マージ順番実行部１４０は、新規作成したコミット３Ａをカレントに設定し、マージ順番キューの次の先頭コミットであるコミット４をポップして処理を継続する。
【００９９】
カレントがコミット３Ａであり、ネクストがコミット４となった場合、マージ順番実行部１４０は、コミット３Ａからコミット４への遷移はコミットリスト１１１（図７参照）には存在しない遷移であると判断する。そして、マージ順番実行部１４０は、ネクストであるコミット４をカレントであるコミット３Ａに３−Ｗａｙマージし、コミット４Ａを生成する（図１０の（５））。そして、マージ順番実行部１４０は、新規作成したコミット４Ａをカレントに設定し、マージ順番キューの次の先頭コミットをポップする。
【０１００】
マージ順番キューＡにはコミット４の次のコミットはないので、マージ順番実行部１４０は、ポップしたコミットが無いと判断し、マージの最終結果であるコミット４Ａをマージ順番実行結果格納部１５０に出力する。
【０１０１】
マージ順番実行部１４０は、以上の処理をマージ順番キューＡ〜Ｆについて実行し、検証用ブランチＡ〜Ｆを生成する。マージ順番実行部１４０は、検証用ブランチＡ〜Ｆでの最終マージ結果であるマージ順番実行結果１４５をそれぞれ検証用のコミット（以下、検査用コミットＡ〜Ｆとする）として、マージ順番実行結果格納部１５０に格納する。
【０１０２】
図１１は、本実施の形態に係るマージ順番実行結果比較部１６０のマージ順番実行結果比較処理を説明するための図である。図１１を用いて、マージ順番実行結果比較部１６０の動作について説明する。マージ順番実行結果比較部１６０は、コミット格納部１１０から３−Ｗａｙマージ部１２０の出力である検査対象のマージコミット５を抽出する。マージ順番実行結果比較部１６０は、抽出したマージコミット５の内容と、マージ順番実行結果格納部１５０に格納されている各マージ結果であるマージ順番実行結果１４５（検査用コミットＡ〜Ｆ）とを、処理装置により比較する。マージ順番実行結果比較部１６０は、マージコミット５と検査用コミットＡ〜Ｆのそれぞれとを処理装置により比較し、差異があるか否かを判定する。マージ順番実行結果比較部１６０は、差異判定部の一例である。
【０１０３】
マージ順番実行結果比較部１６０は、差異があると判定した場合には、その差異を示す情報をマージコミット５の検査結果としてマージ検査結果表示部１７０に出力する。マージ検査結果表示部１７０（表示部）は、差異を示す情報を表示装置９０１に表示する。
【０１０４】
マージ検査結果表示部１７０は、差異を示す情報として、例えば、差異のある検査用コミットを差異部分を強調するなどの表示方法で表示する。また、マージ検査結果表示部１７０は、差異を示す情報として、例えば、差異のある検査用コミットをマージコミット５と並べて表示し、差異部分を強調するなどの表示方法でもよい。
【０１０５】
以上のように、本実施の形態に係るマージ検査装置１００は、ファイルバージョン管理において、３−Ｗａｙマージ結果のマージコミットと、様々な順番でマージした結果を比較することで、マージミスを警告できることを特徴とするマージシステムである。
【０１０６】
本実施の形態に係るマージ検査装置１００は、全てのコミットを格納する手段、３−Ｗａｙマージを実行する手段、共通親コミットからマージ元とマージ先の各コミットの起こり得るマージの順番の組合せを生成する手段、生成されたマージ順番組合せにしたがってファイルマージを繰り返し実行する手段、マージ順番組合せ毎のマージ結果を格納する手段、３−Ｗａｙマージ結果と異なるマージ順番実行結果を検出する手段、３−Ｗａｙマージ結果とは異なるマージ結果を表示する手段を備える。
【０１０７】
以上のように、本実施の形態に係るマージ検査装置１００は、３−Ｗａｙマージ結果のマージコミットと、様々な順番でマージした実行結果（検査用コミットＡ〜Ｆ）を比較するという特徴的な手段によって、デグレードが発生する危険が有る場合にその警告を利用者に発することができる。これによって利用者は、３−Ｗａｙマージ結果を手作業で目視確認する手間が省ける。更に、本実施の形態のマージ検査装置１００によれば、可能性として起こりえるマージ順番を網羅しているので、手作業で目視確認が抜けしてしまうミスを回避できる。
【０１０８】
実施の形態２．
上述した実施の形態１に係るマージ検査装置１００は、一般的なファイルに対して、ファイル内容全体について、３−Ｗａｙマージ結果を検査するものであった。本実施の形態では、ファイルとしてパラメータファイルに限定して、パラメータ値について、３−Ｗａｙマージ結果を検査するマージ検査装置１０１について説明する。
【０１０９】
パラメータファイルとは、パラメータ名を指定するとパラメータ値を取得するアプリケーションプログラムインタフェースが定義されているファイル形式を指す。例えば、Ｊａｖａ（登録商標）プロパティファイルや、Ｊａｖａ（登録商標）２・Ｅｎｔｅｒｐｒｉｓｅ・Ｅｄｉｔｉｏｎの配備記述子ファイル（ｗｅｂ．ｘｍｌなど）が該当する。
【０１１０】
図１２は、本実施の形態に係るマージ検査装置１０１の構成を示すブロック図である。図１２は、図３に対応する図であり、図３と同一の機能構成については同一の符号を付し、その説明を省略する。図１２において、図３と異なる点は、不一致パラメータ検出部１８０を備える点である。
【０１１１】
３−Ｗａｙマージ部１２０により用いられるマージ元コミット２とマージ先コミット４と共通親コミット１０とは、それぞれ複数のパラメータ名と各パラメータ名に対応するパラメータ値とを含むパラメータファイルであるものとする。したがって、これらをマージして生成されるマージコミット５もパラメータファイルである。
【０１１２】
図１２において、不一致パラメータ検出部１８０は、共通親コミット１０とマージ元コミット２とマージ先コミット４の間で、パラメータ値が異なるパラメータ名を列挙する構成要素である。不一致パラメータ検出部１８０は、共通親コミット１０の各パラメータ名のパラメータ値と、マージ元コミット２とマージ先コミット４との各パラメータ名のパラメータ値とを比較して、所定の条件を満たすパラメータ名を不一致パラメータ名１８５として検出する。例えば、不一致パラメータ検出部１８０は、共通親コミット１０の各パラメータ名のパラメータ値と、マージ元コミット２とマージ先コミット４との各パラメータ名のパラメータ値とを比較して、同一のパラメータ名であり、かつ、パラメータ値が異なるパラメータ名を不一致パラメータ名１８５として検出する。
【０１１３】
マージ順番実行部１４０は、不一致パラメータ検出部１８０が検出した不一致パラメータ名１８５を取得する。マージ順番実行部１４０は、マージ順番組合せ生成部１３０により生成されたマージ順番組合せ１３５にしたがって検証用ブランチを生成し、不一致パラメータ名１８５で示されたパラメータのみについてマージを繰り返し、パラメータマージ結果１４６を生成する構成要素（パラメータマージ実行部１４１）を備える。マージ順番実行部１４０がパラメータマージ実行部１４１の機能も有するものとしてもよいし、マージ順番実行部１４０とパラメータマージ実行部１４１とは別の構成要素として構成してもよい。
【０１１４】
マージ順番実行結果格納部１５０は、マージ順番組合せ１３５毎のパラメータマージ結果１４６を格納するパラメータマージ結果格納部１５１の機能を有する。マージ順番実行結果格納部１５０がパラメータマージ結果格納部１５１の機能も有するものとしてもよいし、マージ順番実行結果格納部１５０とパラメータマージ結果格納部１５１とは別の構成要素として構成してもよい。
【０１１５】
マージ順番実行結果比較部１６０は、マージコミット５において不一致パラメータ名１８５に対応するパラメータ値と、パラメータマージ結果格納部に格納されたパラメータマージ結果１４６とを比較して、差異があるか否か判定するパラメータマージ結果比較部１６１の機能を有する。マージ順番実行結果比較部１６０がパラメータマージ結果比較部１６１の機能も有するものとしてもよいし、マージ順番実行結果比較部１６０とパラメータマージ結果比較部１６１とは別の構成要素として構成してもよい。
【０１１６】
マージ検査結果表示部１７０は、パラメータマージ結果比較部１６１により出力された検査結果を入力して、パラメータマージ結果として表示装置９０１に表示するパラメータマージ検査結果表示部１７１の機能を有する。マージ検査結果表示部１７０がパラメータマージ検査結果表示部１７１の機能も有するものとしてもよいし、マージ検査結果表示部１７０とパラメータマージ検査結果表示部１７１は別の構成要素として構成してもよい。
【０１１７】
また、本実施の形態に係るマージ検査装置１０１を、以下のような構成としてもよい。マージ順番実行部１４０と、マージ順番実行部１４０が生成するマージ順番実行結果１４５と、マージ順番実行結果格納部１５０とは、実施の形態１において説明した機能及び構成であるものとする。そして、マージ順番実行結果比較部１６０のみが、不一致パラメータ検出部１８０により検出された不一致パラメータ名１８５を入力し、マージコミット５に含まれる不一致パラメータ名に対応するパラメータ値と、マージ順番実行結果１４５に含まれる不一致パラメータ名に対応するパラメータ値との間に差異があるか否かを判定する機能を有するとしてもよい。
【０１１８】
図１３は、本実施の形態に係る不一致パラメータ検出部の不一致パラメータ検出処理を説明するための図である。不一致パラメータ検出部１８０の動作について図１３を用いて説明する。
【０１１９】
不一致パラメータ検出部１８０は、コミット格納部１１０から、マージ元コミット２とマージ先コミット４と共通親コミット１０を入力して、以下の条件が成立するパラメータ名を抽出する。
【０１２０】
条件：（共通親コミット１０のパラメータ値＝＝マージ元コミット２のパラメータ値、かつ、共通親コミット１０のパラメータ値≠マージ先コミット４のパラメータ値）あるいは（共通親コミット１０のパラメータ値≠マージ元コミット２のパラメータ値、かつ、共通親コミット１０のパラメータ値＝＝マージ先コミット４のパラメータ値）。
【０１２１】
上記の条件を満たすパラメータが３−Ｗａｙマージ方式ではデグレードが発生する危険がある候補である。
【０１２２】
例えば、図１３において、パラメータ名「ｐｒｉｃｅ」について判定してみる。共通親コミット１０のパラメータ値「２００」＝＝マージ元コミット２のパラメータ値「２００」であり、かつ、共通親コミット１０のパラメータ値「２００」≠マージ先コミット４のパラメータ値「４００」を満たしているので、パラメータ名「ｐｒｉｃｅ」は不一致パラメータ名１８５として検出される。図１３においては、同様にパラメータ名「ｎｕｍ」、「ｃｏｌｏｒ」とが不一致パラメータ名１８５として検出される。
【０１２３】
図１４は、本実施の形態に係るパラメータマージ実行部のパラメータマージ実行処理のフローチャート図である。図１５は、本実施の形態に係るパラメータマージ実行部のパラメータマージ実行処理を説明するための図である。図１６は、本実施の形態に係るパラメータマージ結果比較部のパラメータマージ結果比較処理を説明するための図である。図１７は、本実施の形態に係るパラメータマージ検査結果表示部のパラメータマージ検査結果表示処理を説明するための図である。
【０１２４】
まず、図１４を用いてパラメータマージ実行部１４１の動作について説明する。図１４は図９に対応するものであり、パラメータマージ実行部の動作は図９と一箇所を除いて同じである。異なる動作は、Ｓ４１２においてパラメータマージ実行部１４１は、不一致パラメータ検出部１８０が出力した不一致パラメータ名１８５のパラメータのみに対して、ネクストをカレントに３−Ｗａｙマージする点である。
【０１２５】
図１４におけるＳ４０１〜Ｓ４１１及びＳ４１３の処理は、図９におけるＳ３０１〜Ｓ３１１及びＳ３１３の処理と同様であるため、その説明を省略する。
【０１２６】
図１５を用いて、パラメータマージ実行部１４１のパラメータマージ実行処理について説明する。
【０１２７】
図１５に示すように、パラメータマージ実行部１４１は、マージ順番組合せ生成部１３０により生成されたマージ順番キューＡ〜Ｆから、マージ順番キューＣを取得し、コミットのマージを実行するものとする。この場合は、実施の形態１で説明したように、検証用ブランチＡ、検証用ブランチＢは生成済みであり、マージ順番実行結果１４５（パラメータマージ結果１４６）はマージ順番実行結果格納部１５０（パラメータマージ結果格納部１５１）に格納済みである。
【０１２８】
図１３に示すように、不一致パラメータ検出部１８０により検出された不一致パラメータ名１８５は、「ｐｒｉｃｅ」、「ｎｕｍ」、「ｃｏｌｏｒ」である。実施の形態１において説明したマージ方法により、マージ順番キューＣにしたがって、コミットをマージしていく。このとき、不一致パラメータ検出部１８０により検出された不一致パラメータ名１８５（「ｐｒｉｃｅ」、「ｎｕｍ」、「ｃｏｌｏｒ」）についてのみマージする。
【０１２９】
図１５に示すように、まず、パラメータマージ実行部１４１は、共通親コミット１０からコミット１へマージを、不一致パラメータ名１８５についてのみ実行する（図１５の（２））。次に、パラメータマージ実行部１４１は、コミット１からコミット３への遷移を実行するが、この遷移はコミットリスト１１１にない遷移なので、共通親コミット１０とコミット１とコミット３との不一致パラメータ名１８５についてのみ３−Ｗａｙマージを実行する（図１５の（３））。このように、実施の形態１で説明したマージ方式により、マージ順番キューＣにしたがってコミットを不一致パラメータ名１８５についてのみマージし、マージ結果であるパラメータマージ結果１４６をパラメータマージ結果格納部１５１に格納する。
【０１３０】
図１６は、本実施の形態に係るパラメータマージ結果比較部１６１のパラメータマージ結果比較処理を説明するための図である。パラメータマージ結果比較部１６１は、コミット格納部１１０から３−Ｗａｙマージ部１２０の出力であるマージコミット５を抽出する。このマージコミット５のパラメータ値と、パラメータマージ結果格納部１５１に格納されている各パラメータマージ結果１４６のパラメータ値とを比較して、異なっているパラメータマージ結果１４６をパラメータマージ検査結果表示部１７１に出力する。
【０１３１】
例えば、パラメータマージ結果比較部１６１は、検証用ブランチＡのパラメータマージ結果１４６の内容と、コミット格納部１１０に格納されているマージコミット５の不一致パラメータ名１８５についてのみとを処理装置により比較する。図１６に示すように、これらは一致する。
【０１３２】
また、例えば、パラメータマージ結果比較部１６１は、検証用ブランチＣのパラメータマージ結果１４６の内容と、コミット格納部１１０に格納されているマージコミット５の不一致パラメータ名１８５についてのみとを処理装置により比較する。図１６に示すように、これらは「ｎｕｍ」が不一致である。したがって、パラメータマージ結果比較部１６１は、不一致となった検証用ブランチＣのパラメータマージ結果１４６の内容とマージコミット５の内容とをパラメータマージ検査結果表示部１７１に出力する。
【０１３３】
図１７は、本実施の形態に係るパラメータマージ検査結果表示部１７１のパラメータマージ検査結果表示処理を説明するための図である。
【０１３４】
例えば、パラメータマージ検査結果表示部１７１は、マージコミット５における不一致パラメータ名１８５（例えば、検証用ブランチＣのパラメータマージ結果１４６の「ｎｕｍ」）について検査した結果として、以下の情報を表示装置９０１に表示する。
【０１３５】
「パラメータ名」として「ｎｕｍ」、「３−Ｗａｙマージ結果」として「４（マージ先の値）」、「他候補値」として「２（マージ元の値）」、「共通親コミットのパラメータ値」として「２」、「マージ元のパラメータ値」として「２」、「マージ先のパラメータ値」として「４」を表示する。
【０１３６】
不一致パラメータ名１８５の示すパラメータについて上記のような表示をすることにより、利用者はデグレードが発生していないかを容易に判断することができる。
【０１３７】
以上のように、本実施の形態に係るマージ検査装置１０１は、パラメータファイルのバージョン管理において、３−Ｗａｙマージ結果のパラメータ値と、様々な順番でマージしたパラメータ値を比較することで、マージミスを警告できることを特徴とするマージシステムである。本実施の形態に係るマージ検査装置１０１は、全てのコミットを格納する手段、３−Ｗａｙマージを実行する手段、共通親コミットからマージ元とマージ先の各コミットの起こり得るマージの順番の組合せを生成する手段、３−Ｗａｙマージで使うマージ元コミットとマージ先コミットと共通親コミットでパラメータ値が異なるパラメータ名を列挙する手段、生成されたマージ順番組合せにしたがってパラメータのマージを繰り返し実行する手段、マージ順番組合せ毎のマージ結果を格納する手段、３−Ｗａｙマージ結果と異なるマージ順番実行結果のパラメータ名とパラメータ値を検出する手段、３−Ｗａｙマージ結果とは異なるマージ結果となるパラメータ名とパラメータ値を表示する手段を備える。
【０１３８】
また、特に、本実施の形態に係るマージ検査装置１０１の不一致パラメータ検出部１８０は、コミット格納部１１０からマージ元コミット２とマージ先コミット４と共通親コミット１０を入力して、パラメータ値が異なるパラメータ名をパラメータマージ実行部１４１に出力する。パラメータマージ実行部１４１は、パラメータ値が異なるパラメータ名に対してのみ、マージ順番組合せにしたがってパラメータのマージを繰り返し、パラメータマージ結果格納部１５１に出力する。パラメータマージ結果比較部１６１は、パラメータ値が異なるパラメータ名に対してのみ、マージコミットのパラメータ値と異なるパラメータマージ結果１４６を検出して、パラメータマージ検査結果表示部１７１に出力する。
【０１３９】
以上のように、本実施の形態に係るマージ検査装置１０１では、３−Ｗａｙマージ結果のパラメータ値と、様々な順番でマージしたパラメータ値を比較するという特徴的な手段によって、デグレードが発生する危険が有る場合にその警告を利用者に発することができる。これによって利用者は、３−Ｗａｙマージ結果を手作業で目視確認する手間が省ける。更に本実施の形態では、可能性として起こりえるマージ順番を網羅しているので、手作業で目視確認が抜けしてしまうミスを回避できる。
【０１４０】
更に、本実施の形態に係るマージ検査装置１０１では、ファイル全体をマージし比較するのではなく、デグレードの危険があるパラメータのみをマージし比較するので、計算量を低減することができる。そして、３−Ｗａｙマージ結果と異なるマージ結果となるファイル内容を表示するのではなく、値が異なるパラメータだけをマージ検査結果表示部が表示することによって、同じパラメータ値の相違が繰り返し表示される煩雑さを防止できる。
【０１４１】
以上、本発明の実施の形態について説明したが、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１４２】
１，２，３，４  コミット、５  マージコミット、１０  共通親コミット、１００，１０１  マージ検査装置、１１０  コミット格納部、１１１  コミットリスト、１２０  ３−Ｗａｙマージ部、１３０  マージ順番組合せ生成部、１３５  マージ順番組合せ、１３８  ツリー構造生成部、１４０  マージ順番実行部、１４１  パラメータマージ実行部、１４５  マージ順番実行結果、１４６  パラメータマージ結果、１５０  マージ順番実行結果格納部、１５１  パラメータマージ結果格納部、１６０  マージ順番実行結果比較部、１６１  パラメータマージ結果比較部、１７０  マージ検査結果表示部、１７１  パラメータマージ検査結果表示部、１８０  不一致パラメータ検出部、１８５  不一致パラメータ名、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2013257608.tif 000003
【図２】
2013257608.tif 000004
【図３】
2013257608.tif 000005
【図４】
2013257608.tif 000006
【図５】
2013257608.tif 000007
【図６】
2013257608.tif 000008
【図７】
2013257608.tif 000009
【図８】
2013257608.tif 000010
【図９】
2013257608.tif 000011
【図１０】
2013257608.tif 000012
【図１１】
2013257608.tif 000013
【図１２】
2013257608.tif 000014
【図１３】
2013257608.tif 000015
【図１４】
2013257608.tif 000016
【図１５】
2013257608.tif 000017
【図１６】
2013257608.tif 000018
【図１７】
2013257608.tif 000019