(57)【要約】【課題】  ソースコードバージョン管理プログラム及び管理方法において、あるバージョンのソースコードに、２人の人間が異なる対応を個々で入れたとき、その異なる対応の入った２つのソースコードを自動でマージすること。【解決手段】  マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージする。【選択図】図８
2010176594.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロジェクトにまたがるソースコードのバージョン管理機能をコンピュータに実現させるソースコードバージョン管理プログラムであって、
コンピュータに、
前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与えるバージョン管理機能と、
前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存するソース保存機能と、
マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージするマージ機能とを実現させる
ことを特徴とするソースコードバージョン管理プログラム。
【請求項２】
請求項１のソースコードバージョン管理プログラムであって、
前記マージ機能は、前記差異の蓄積をマージする際に前回マージが行われた以降の中でバージョンの古い順から新しい順にマージ元コードとマージ先との差異を抽出してマージを繰り返す
ことを特徴とするソースコードバージョン管理プログラム。
【請求項３】
複数のプロジェクトにまたがるソースコードのソースコードバージョン管理方法であって、
前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与え、
前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存し、
マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージする
ことを特徴とするソースコードバージョン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ソフトウェア開発において、複数のプロジェクトの開発時にソースコードのバージョン管理を行う技術に関するものである。
【背景技術】
【０００２】
今日では、互いに関連し合った複数のプロジェクトを並行して開発することも多く、あるプロジェクトでソースコードのバージョンアップがあると、その差分が他のプロジェクトにも関連していて、他のプロジェクトにも取り込む必要がある場合がある(ここでソースを比較し、必要な部分を取り込むことをマージと呼ぶ)。この場合、他のプロジェクトのソースは、元々は同じソースであっても、各プロジェクト固有の対応が既に入っており、マージを行うべき部分がどれかの判断を付けることに時間を要し、マージすることに大きな労力を要することがある。
【０００３】
従来技術として、ソフトウェア開発で、あるバージョンのソースコードに、２人の人間が異なる対応を個々で入れたとき、その異なる対応の入った２つのソースコードを自動でマージするシステムがある（特許文献１参照）。
【０００４】
また、他の従来技術として、モデル駆動型開発を支援する装置で、モデル変換機能はソースモデルをターゲットモデルに変換し、変更依存モデルを生成し、ソース編集者毎に同等にそれらモデルを生成すると、編集要素登録機能がそれらの差分を生成して、その後マージ機能がそれら差分からマージを行う方法がある（特許文献２参照）。
【０００５】
しかし、これらの方法は、ひとつのプロジェクトに対してのみ適用可能であって、複数のプロジェクトが並行して開発が行われている場合には、適用できない問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−８１３７１号公報
【特許文献２】特開２００８−２６９１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
解決しようとする問題点は、ソースコードバージョン管理プログラム及び管理方法において、あるバージョンのソースコードに、２人の人間が異なる対応を個々で入れたとき、その異なる対応の入った２つのソースコードを自動でマージすることができなかった点である。
【課題を解決するための手段】
【０００８】
本発明のソースコードバージョン管理プログラムは、複数のプロジェクトにまたがるソースコードのバージョン管理機能をコンピュータに実現させるソースコードバージョン管理プログラムであって、コンピュータに、前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与えるバージョン管理機能と、前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存するソース保存機能と、マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージするマージ機能とを実現させることを特徴とする。
【０００９】
また、本発明のソースコードバージョン管理プログラムのマージ機能は、前記差異の蓄積をマージする際に前回マージが行われた以降の中でバージョンの古い順から新しい順にマージ元コードとマージ先との差異を抽出してマージを繰り返すことを特徴としてもよい。
【００１０】
本発明のソースコードバージョン管理方法は、複数のプロジェクトにまたがるソースコードのソースコードバージョン管理方法であって、前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与え、前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存し、マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージすることを特徴とする。
【発明の効果】
【００１１】
本発明のソースコードバージョン管理プログラムは、複数のプロジェクトにまたがるソースコードのバージョン管理機能をコンピュータに実現させるソースコードバージョン管理プログラムであって、コンピュータに、前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与えるバージョン管理機能と、前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存するソース保存機能と、マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージするマージ機能とを実現させることを特徴とする。
【００１２】
このため、複数のプロジェクトを並行して開発するとき、他のプロジェクトにも更新が必要であるようなソースをマージする際に、マージするべき箇所を自動で検索するのでマージするべき箇所を手作業で探す必要が無くなり、開発効率が上がる。さらに、マージするべき箇所を自動で検索するので、マージミスを防ぐことができる
また、本発明のソースコードバージョン管理プログラムのマージ機能は、前記差異の蓄積をマージする際に前回マージが行われた以降の中でバージョンの古い順から新しい順にマージ元コードとマージ先との差異を抽出してマージを繰り返すことを特徴としてもよい。
【００１３】
このため、マージ先とのマージを行わずにマージ元の変更が蓄積していても、それらの全ての更新がマージに反映される。
【００１４】
本発明のソースコードバージョン管理方法は、複数のプロジェクトにまたがるソースコードのソースコードバージョン管理方法であって、前記ソースコードの生成及び更新時に新規のバージョンナンバーを関連付けて与え、前記ソースコードの生成及び更新時に該ソースコードを前記バージョンナンバーと関連付けて保存し、マージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージすることを特徴とする。
【００１５】
このため、複数のプロジェクトを並行して開発するとき、他のプロジェクトにも更新が必要であるようなソースをマージする際に、マージするべき箇所を自動で検索するのでマージするべき箇所を手作業で探す必要が無くなり、開発効率が上がる。さらに、マージするべき箇所を自動で検索するので、マージミスを防ぐことができる
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るコンピュータの機能ブロック図である。
【図２】ソースコードのプロジェクト毎のバージョンツリーの図である。
【図３】ＰＪ＿Ａのソースに追加がある場合のソースコードのマップ図である。
【図４】ＰＪ＿Ａのソースに削除がある場合のソースコードのマップ図である。
【図５】ＰＪ＿Ａのバージョン３をＰＪ＿Ｂのバージョン２にマージする場合のバージョンツリー図である。
【図６】図５のケースでのＰＪ＿ＡとＰＪ＿Ｂのソースコードのマップ図である。
【図７】図５のケースでの差異の比較後のソースコードのマップ図である。
【図８】ソースコードバージョン管理プログラムの動作のフローチャートである。
【発明を実施するための形態】
【００１７】
ソースコードバージョン管理プログラム及び管理方法において、あるバージョンのソースコードに、２人の人間が異なる対応を個々で入れたとき、その異なる対応の入った２つのソースコードを自動でマージする課題をマージ元とマージ先の二つのソースコードを比較してその差異のあるなしを抽出し、差異があると判断された場合にマージ元のソースコードの前回マージが行われた以降のバージョンの差異の蓄積をソース先のソースコードに対してマージする方法により解決した。
【実施例】
【００１８】
本発明実施例としてのソースコードバージョン管理プログラムについて以下に説明する。
【００１９】
図１に、コンピュータ１０１の機能ブロック図を示す。
【００２０】
コンピュータ１０１は、ソース保存部（ソース保存機能）１１１、バージョン管理部（バージョン管理機能）１１３、マージ実行部（マージ実行機能）１１５の各機能部を有する。
【００２１】
ここで、コンピュータ１０１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）および記憶装置を備えている。
【００２２】
ＣＰＵは、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭは、ソースコードバージョン管理プログラム等、コンピュータ１０１を動作させるのに必要なプログラムを予め記憶した不揮発性のメモリである。また、ＲＡＭは、プログラムを実行する際にそのプログラムや、比較対象となるソースコードを一時的に記憶するメモリである。記憶装置は、ハードディスクドライブ、フラッシュメモリ（登録商標）等の読み書き可能な不揮発性の半導体メモリであり、各プロジェクトのソースコードを記憶する。
【００２３】
ソースコードバージョン管理プログラムは、コンピュータ１０１により実行されることにより、ＣＰＵに上記の各機能を実現させる。
【００２４】
以下に各機能部について説明する。
【００２５】
ソース保存部１１１は、ソースコードを保存している機能部である。ソースコードは、プロジェクトごとに分けて管理されている。
【００２６】
バージョン管理部１１３は、ソースコードのバージョンを管理している機能部である。図２のRational ClearCase のバージョンツリーを利用してその機能を説明する。
【００２７】
長方形で囲まれた文字列は、各プロジェクト名である。ここではＰＪ＿Ａ、ＰＪ＿Ｂ、ＰＪ＿Ｃという３つのプロジェクトで source.c というソースが使われていることを示している。○と内部の数字で、ソースのバージョンを表す。矢印は、マージ元とマージ先を示す。例えば、ＰＪ＿Ａのバージョン２では、プロジェクト全体に必要な更新が入ったので、ＰＪ＿Ｂのバージョン３とＰＪ＿Ｃのバージョン２にＰＪ＿Ａのバージョン２のコードがマージしたことを表している。
【００２８】
マージ実行部１１５は、マージを行う機能部である。
【００２９】
図３及び図４を用いてマージ実行部１１５がマージを行う際の手順について説明する。
【００３０】
ＰＪ＿Ａのソースsource.c に更新があり、この更新がＰＪ＿Ｂにも必要な内容で、マージしなければならないケースを考える。図３は、ＰＪ＿Ａのソースと、ＰＪ＿Ｂのソースを比較したイメージ図である。この場合、ＰＪ＿Ａにのみ斜線部分の追加のソースが入ったことを表している。
【００３１】
以下にマージ機能部１１５の動作について、コードの追加及び削除の場合について説明する。
【００３２】
（１）図３のように、ＰＪ＿Ａに唯一の追加がある場合
マージ機能部１１５は、図３のようにＰＪ＿ＡとＰＪ＿Ｂのソースコードを比較する。ＰＪ＿Ａで、ソースコードが追加された行に対応するＰＪ＿Ｂの行を検索し、ＰＪ＿Ｂのソースコードに挿入する。
【００３３】
（２）図４のように、ＰＪ＿Ａに唯一の削除がある場合
図４のように、ＰＪ＿ＡとＰＪ＿Ｂのソースコードを比較する。ＰＪ＿Ａで、ソースコードが削除された行に対応する ＰＪ＿Ｂ の行を検索し、ＰＪ＿Ｂ のソースコードから削除する。
【００３４】
（３）図６のように、ＰＪ＿Ａに複数の差異がある場合
図５のように、ＰＪ＿Ａバージョン２からＰＪ＿Ａバージョン３への更新を、ＰＪ＿Ｂ-バージョン２にマージしたいとする。ＰＪ＿Ａバージョン３とＰＪ＿Ｂバージョン２を比較したところ図６のようになり、３箇所の差異があったものとする。この場合、単純にソースコードを比較しただけでは、どの差異がＰＪ＿Ｂバージョン２にマージしたいものかの判断ができない。まずはこの３箇所の差異の情報を記録しておく。
【００３５】
ここで、ＰＪ＿Ａのソースコードに着目する。今、マージ元はＰＪ＿Ａバージョン３であるので、ＰＪ＿Ａバージョン３と、そのひとつ前のバージョンのＰＪ＿Ａバージョン２とを比較する。ここで現れた差異が図７として、この差異が先ほどの差異ｂ，ｃと一致したとすると、これらの差異が今回ＰＪ＿Ｂバージョン２にマージしたい部分と分かる(差異ａは、ＰＪ＿Ｂバージョン１からＰＪ＿Ｂバージョン２への更新時に削除された箇所であることも分かる)。
そして、差異ｂ、ｃと対応するＰＪ＿Ｂバージョン２の行を検索し、マージする。
【００３６】
（１）と（２）は、（３）の方法でマージしても同じ結果を得ることができる。
【００３７】
［フローチャート］
このマージの流れをフローチャートにすると、図８のようになる。
【００３８】
Ｓ１１：コンピュータ１０１にマージ元のＰＪ＿Ｘのバージョンｘを入力する。
【００３９】
Ｓ１３：コンピュータ１０１にマージ先のＰＪ＿Ｙのバージョンｙを入力する。
【００４０】
Ｓ１５：マージ実行部１１５は、ＰＪ＿ＸバージョンｘとＰＪ＿Ｙバージョンｙのソースコードを比較する。
【００４１】
Ｓ１７：Ｓ１５での比較の結果、ＰＪ＿ＸバージョンｘとＰＪ＿Ｙバージョンｙのソースコード間に差異がある場合は動作をＳ１９に移行する。差異がない場合は、マージの必要がないので動作を終了する。
【００４２】
Ｓ１９：マージ実行部１１５は、差異の情報を記憶する。
【００４３】
Ｓ２１：マージ実行部１１５は、ＰＪ＿Ｘバージョンｘとそれ以前のバージョンを遡りバージョンアップ前のＰＪ＿Ｘバージョン（ｘ−ｉ）（ここで、ｉは１からＸ−１の正数を示す。本実施例ではＰＪ＿Ａバージョン２である。）とＰＪ＿Ｘバージョンｘのソースコード間の比較を行う。
【００４４】
Ｓ２３：Ｓ２１で得られた差異と、Ｓ１５で得られた差異を比較する。
【００４５】
Ｓ２５：Ｓ２３での比較が一致した差異のみをＰＪ＿Ｙバージョンｙのソースコードにマージする。
【００４６】
以上の一連の動作でマージ動作を終了する。
【００４７】
なお、ステップＳ２１において、遡るバージョンはＰＪ＿Ｙにマージした最新のバージョンまでに限るものとする。
【００４８】
［実施例の効果］
本発明実施例のソースコードバージョン管理方法により以下の効果が得られる。
【００４９】
複数のプロジェクトを並行して開発するとき、他のプロジェクトにも更新が必要であるようなソースをマージする際に、マージするべき箇所を自動で検索するのでマージするべき箇所を手作業で探す必要が無くなり、開発効率が上がる。
【００５０】
マージするべき箇所を自動で検索するので、マージミスを防ぐことができる。
【符号の説明】
【００５１】
１０１  コンピュータ
１１１  ソース保存部
１１３  バージョン管理部
１１５  マージ実行部
【図１】
2010176594.tif 000003
【図２】
2010176594.tif 000004
【図３】
2010176594.tif 000005
【図４】
2010176594.tif 000006
【図５】
2010176594.tif 000007
【図６】
2010176594.tif 000008
【図７】
2010176594.tif 000009
【図８】
2010176594.tif 000010