JPH0981371A - ソースコード自動バージョンアップ方法及び装置 - Google Patents
ソースコード自動バージョンアップ方法及び装置Info
- Publication number
- JPH0981371A JPH0981371A JP7232742A JP23274295A JPH0981371A JP H0981371 A JPH0981371 A JP H0981371A JP 7232742 A JP7232742 A JP 7232742A JP 23274295 A JP23274295 A JP 23274295A JP H0981371 A JPH0981371 A JP H0981371A
- Authority
- JP
- Japan
- Prior art keywords
- file
- difference
- difference information
- derived
- files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】ソースコードのバージョンアップが自動的に行
えるようにする。 【解決手段】元ファイルとしてファイル11が、第1の
派生ファイルとしてファイル12-1が、そして第2の派
生ファイルとして派生ファイル12-2がそれぞれ指定さ
れた場合、各ファイル11,12-1,12-2を磁気ディ
スク装置1から差分情報生成機構21に読み込んで、派
生ファイル12-1と元ファイル11の間の差異、及び元
ファイル11と派生ファイル12-2の差異を求め、これ
から元ファイル11を介して派生ファイル12-1と派生
ファイル12-2の行の対応をとって、差分情報210と
して生成する。マージ機構22では、この差分情報21
0と派生ファイル12-1,12-2をもとに、例えば派生
ファイル12-2に対して派生ファイル12-1の変更部分
を追加していく形で出力ファイル220を生成する。
えるようにする。 【解決手段】元ファイルとしてファイル11が、第1の
派生ファイルとしてファイル12-1が、そして第2の派
生ファイルとして派生ファイル12-2がそれぞれ指定さ
れた場合、各ファイル11,12-1,12-2を磁気ディ
スク装置1から差分情報生成機構21に読み込んで、派
生ファイル12-1と元ファイル11の間の差異、及び元
ファイル11と派生ファイル12-2の差異を求め、これ
から元ファイル11を介して派生ファイル12-1と派生
ファイル12-2の行の対応をとって、差分情報210と
して生成する。マージ機構22では、この差分情報21
0と派生ファイル12-1,12-2をもとに、例えば派生
ファイル12-2に対して派生ファイル12-1の変更部分
を追加していく形で出力ファイル220を生成する。
Description
【0001】
【発明の属する技術分野】本発明は、ソースコードをバ
ージョンアップするのに好適なソースコード自動バージ
ョンアップ方法及び装置に関する。
ージョンアップするのに好適なソースコード自動バージ
ョンアップ方法及び装置に関する。
【0002】
【従来の技術】従来、ソースコードのファイルのマージ
は、図21に示す方法で次のように行われていた。即
ち、ある元ファイル61から派生した2つのファイル
(派生バージョン)62-1,62-2が存在する場合、こ
の2つの派生ファイル62-1,62-2を比較して、その
相違部分を検出し、その相違部分をもとにファイルのマ
ージを行って新たなファイル(新バージョン)63を生
成していた。
は、図21に示す方法で次のように行われていた。即
ち、ある元ファイル61から派生した2つのファイル
(派生バージョン)62-1,62-2が存在する場合、こ
の2つの派生ファイル62-1,62-2を比較して、その
相違部分を検出し、その相違部分をもとにファイルのマ
ージを行って新たなファイル(新バージョン)63を生
成していた。
【0003】
【発明が解決しようとする課題】そこで、図21に示し
たようなマージ方法を利用して、例えば派生ファイル6
2-1は既に動作しているが、派生ファイル62-2はまだ
動作していないなどといった場合に、派生ファイル62
-1に派生ファイル62-2での変更部分を取り込むことが
できるならば、ソースコードをバージョンアップした際
の不具合の発生を減少させるのに効果的である。
たようなマージ方法を利用して、例えば派生ファイル6
2-1は既に動作しているが、派生ファイル62-2はまだ
動作していないなどといった場合に、派生ファイル62
-1に派生ファイル62-2での変更部分を取り込むことが
できるならば、ソースコードをバージョンアップした際
の不具合の発生を減少させるのに効果的である。
【0004】しかし、上記した従来のファイルマージ方
法では、派生ファイル62-1と派生ファイル62-2とは
同じレベルに列せられており、派生ファイル62-1,6
2-2間の相違箇所は分かっても、各相違箇所が、どちら
の派生ファイルでの変更によるものであるかは分からな
いことから、上記したような派生ファイル62-1に派生
ファイル62-2での変更部分を取り込むことは、ユーザ
が結果的にそうなるように逐次指示していかない限り、
不可能であった。
法では、派生ファイル62-1と派生ファイル62-2とは
同じレベルに列せられており、派生ファイル62-1,6
2-2間の相違箇所は分かっても、各相違箇所が、どちら
の派生ファイルでの変更によるものであるかは分からな
いことから、上記したような派生ファイル62-1に派生
ファイル62-2での変更部分を取り込むことは、ユーザ
が結果的にそうなるように逐次指示していかない限り、
不可能であった。
【0005】また、従来のマージ方法では、元ファイル
61はどのようなファイルであるか、元ファイル61と
各々の派生ファイル62-1,62-2にどのような違いが
あるかなどの情報は一斉考慮されていなかった。そのた
め、各派生ファイル62-1,62-2間の違いが、それぞ
れの変更箇所の衝突によるものなのか、それとも一方の
ファイルだけの変更によるものなのかが特定できず、ユ
ーザが別途ソースコードを比較して判断する必要があっ
た。
61はどのようなファイルであるか、元ファイル61と
各々の派生ファイル62-1,62-2にどのような違いが
あるかなどの情報は一斉考慮されていなかった。そのた
め、各派生ファイル62-1,62-2間の違いが、それぞ
れの変更箇所の衝突によるものなのか、それとも一方の
ファイルだけの変更によるものなのかが特定できず、ユ
ーザが別途ソースコードを比較して判断する必要があっ
た。
【0006】本発明は上記事情を考慮してなされたもの
でその目的は、ソースコードのバージョンアップ、特に
ソースコードの元ファイルから派生した2つの派生ファ
イルの一方に、もう一方のファイルの変更箇所を取り込
んで新バージョンを作成するマージ処理が自動的に行え
るソースコード自動バージョンアップ装置及び方法を提
供することにある。
でその目的は、ソースコードのバージョンアップ、特に
ソースコードの元ファイルから派生した2つの派生ファ
イルの一方に、もう一方のファイルの変更箇所を取り込
んで新バージョンを作成するマージ処理が自動的に行え
るソースコード自動バージョンアップ装置及び方法を提
供することにある。
【0007】
【課題を解決するための手段】本発明の第1の観点に係
る構成は、ソースコードの元ファイルと当該元ファイル
から派生した第1の派生ファイルの間の差異を調べて、
対応する位置関係を示す第1の差分情報を生成すると共
に、元ファイルと当該元ファイルから派生した第2の派
生ファイルの間の差異を調べて、対応する位置関係を示
す第2の差分情報を生成した後、これら第1及び第2の
差分情報から、上記第1及び第2の派生ファイル間の差
異に対応する位置関係を示す第3の差分情報を生成し、
この第3の差分情報と上記第1及び第2の派生ファイル
をもとに、第1及び第2の派生ファイルのいずれか一方
のファイルに、他方のファイルの変更部分を取り込む形
でソースコードのマージを行って、バージョンアップさ
れた出力ファイルを生成するようにしたことを特徴とす
る。ここで、上記一方のファイルに、他方のファイルの
変更部分を取り込む際に、その変更部分の例えば各行に
他方のファイルからの取り込みであることを示す識別情
報(マーク情報)を付加するとよい。
る構成は、ソースコードの元ファイルと当該元ファイル
から派生した第1の派生ファイルの間の差異を調べて、
対応する位置関係を示す第1の差分情報を生成すると共
に、元ファイルと当該元ファイルから派生した第2の派
生ファイルの間の差異を調べて、対応する位置関係を示
す第2の差分情報を生成した後、これら第1及び第2の
差分情報から、上記第1及び第2の派生ファイル間の差
異に対応する位置関係を示す第3の差分情報を生成し、
この第3の差分情報と上記第1及び第2の派生ファイル
をもとに、第1及び第2の派生ファイルのいずれか一方
のファイルに、他方のファイルの変更部分を取り込む形
でソースコードのマージを行って、バージョンアップさ
れた出力ファイルを生成するようにしたことを特徴とす
る。ここで、上記一方のファイルに、他方のファイルの
変更部分を取り込む際に、その変更部分の例えば各行に
他方のファイルからの取り込みであることを示す識別情
報(マーク情報)を付加するとよい。
【0008】本発明の第2の観点に係る構成は、上記第
1の観点に係る構成に、第1及び第2の派生ファイル間
の差異を調べて、その差異に対応する位置関係を示す第
4の差分情報を生成する処理を加え、マージ時に当該第
4の差分情報を参照することでマージの妥当性を検証す
るようにしたことを特徴とする。
1の観点に係る構成に、第1及び第2の派生ファイル間
の差異を調べて、その差異に対応する位置関係を示す第
4の差分情報を生成する処理を加え、マージ時に当該第
4の差分情報を参照することでマージの妥当性を検証す
るようにしたことを特徴とする。
【0009】本発明の第3の観点に係る構成は、上記第
1の観点に係る構成に、出力ファイルと、各入力ファイ
ル(元ファイル、第1及び第2の派生ファイル)とを比
較することで、出力ファイルが正しくマージされている
か否かを検証する処理を加えたことを特徴とする。
1の観点に係る構成に、出力ファイルと、各入力ファイ
ル(元ファイル、第1及び第2の派生ファイル)とを比
較することで、出力ファイルが正しくマージされている
か否かを検証する処理を加えたことを特徴とする。
【0010】本発明の第4の観点に係る構成は、各入力
ファイル(元ファイル、第1及び第2の派生ファイル)
を関数毎に分解してファイル別の関数リストを生成した
後、これら各関数リストのうち元ファイルと第1の派生
ファイルの両関数リストの差異を調べて、対応する位置
関係を示す第1の差分情報を生成すると共に、元ファイ
ルと第2の派生ファイルの両関数リストの差異を調べ
て、対応する位置関係を示す第2の差分情報を生成し、
更にこれら第1及び第2の差分情報から、第1及び第2
の派生ファイルの両関数リスト間の差異に対応する位置
関係を示す第3の差分情報を生成し、この第3の差分情
報と上記第1及び第2の派生ファイルをもとに、第1及
び第2の派生ファイルのいずれか一方のファイルに、他
方のファイルの変更部分を取り込む形でソースコードの
マージを行って、バージョンアップされた出力ファイル
を生成するようにしたことを特徴とする。
ファイル(元ファイル、第1及び第2の派生ファイル)
を関数毎に分解してファイル別の関数リストを生成した
後、これら各関数リストのうち元ファイルと第1の派生
ファイルの両関数リストの差異を調べて、対応する位置
関係を示す第1の差分情報を生成すると共に、元ファイ
ルと第2の派生ファイルの両関数リストの差異を調べ
て、対応する位置関係を示す第2の差分情報を生成し、
更にこれら第1及び第2の差分情報から、第1及び第2
の派生ファイルの両関数リスト間の差異に対応する位置
関係を示す第3の差分情報を生成し、この第3の差分情
報と上記第1及び第2の派生ファイルをもとに、第1及
び第2の派生ファイルのいずれか一方のファイルに、他
方のファイルの変更部分を取り込む形でソースコードの
マージを行って、バージョンアップされた出力ファイル
を生成するようにしたことを特徴とする。
【0011】本発明の第5の観点に係る構成は、元ファ
イルと第1の派生ファイルの間の差異を調べて、対応す
る位置関係を示す第1の差分情報を生成すると共に、元
ファイルと第2の派生ファイルの間の差異を調べて、対
応する位置関係を示す第2の差分情報を生成し、この第
1及び第2の差分情報から、第1及び第2の派生ファイ
ル間の差異に対応する位置関係を示す第3の差分情報を
生成する一方、元ファイルと第1及び第2の派生ファイ
ルの間で常に同じパターンで変更が行われている箇所を
探して、その変更前後のパターンの対応情報を定型置換
情報として生成するようにし、上記第3の差分情報と、
第1及び第2の派生ファイルをもとに、第1及び第2の
派生ファイルのいずれか一方のファイルに、他方のファ
イルの変更部分を取り込む形でソースコードのマージを
行って、バージョンアップされた出力ファイルを生成す
る場合に、上記定型置換情報の示す変更前パターンに一
致するソースコード部分については、当該定型置換情報
の示す変更後パターン(定型パターン)に置換すること
を特徴とする。
イルと第1の派生ファイルの間の差異を調べて、対応す
る位置関係を示す第1の差分情報を生成すると共に、元
ファイルと第2の派生ファイルの間の差異を調べて、対
応する位置関係を示す第2の差分情報を生成し、この第
1及び第2の差分情報から、第1及び第2の派生ファイ
ル間の差異に対応する位置関係を示す第3の差分情報を
生成する一方、元ファイルと第1及び第2の派生ファイ
ルの間で常に同じパターンで変更が行われている箇所を
探して、その変更前後のパターンの対応情報を定型置換
情報として生成するようにし、上記第3の差分情報と、
第1及び第2の派生ファイルをもとに、第1及び第2の
派生ファイルのいずれか一方のファイルに、他方のファ
イルの変更部分を取り込む形でソースコードのマージを
行って、バージョンアップされた出力ファイルを生成す
る場合に、上記定型置換情報の示す変更前パターンに一
致するソースコード部分については、当該定型置換情報
の示す変更後パターン(定型パターン)に置換すること
を特徴とする。
【0012】上記第1の観点に係る構成においては、元
ファイルから派生した第1及び第2の派生ファイルの一
方を基本とし、そのソースコードにもう一方のファイル
の変更部分を追加していく形でマージを行うことが可能
となる。これにより、マージ後のソースコードでの不具
合の発生を減少することができる。また、元ファイルと
第1及び第2の派生ファイルの差異を検出することで、
対応する第1及び第2の差分情報から第1及び第2の派
生ファイルがそれぞれ独自に変更を行った箇所を特定で
き、各変更部分の衝突箇所も特定できる。更に、上記一
方のファイルに追加される他方のファイルの変更部分の
例えば各行にマーク情報を付加する構成を適用した場
合、このマーク情報をテキストエディタなどで探すこと
により変更部分を自動的に検出できることから、変更部
分の正当性の検証が容易に行える。
ファイルから派生した第1及び第2の派生ファイルの一
方を基本とし、そのソースコードにもう一方のファイル
の変更部分を追加していく形でマージを行うことが可能
となる。これにより、マージ後のソースコードでの不具
合の発生を減少することができる。また、元ファイルと
第1及び第2の派生ファイルの差異を検出することで、
対応する第1及び第2の差分情報から第1及び第2の派
生ファイルがそれぞれ独自に変更を行った箇所を特定で
き、各変更部分の衝突箇所も特定できる。更に、上記一
方のファイルに追加される他方のファイルの変更部分の
例えば各行にマーク情報を付加する構成を適用した場
合、このマーク情報をテキストエディタなどで探すこと
により変更部分を自動的に検出できることから、変更部
分の正当性の検証が容易に行える。
【0013】上記第2の観点に係る構成においては、第
1及び第2の派生ファイルの差分情報(第4の差分情
報)をマージ時に参照することで、マージの正当性の検
証がより詳細に行えるようになり、出力ファイルの正確
さが増加する。
1及び第2の派生ファイルの差分情報(第4の差分情
報)をマージ時に参照することで、マージの正当性の検
証がより詳細に行えるようになり、出力ファイルの正確
さが増加する。
【0014】上記第3の観点に係る構成においては、出
力ファイルと各入力ファイルとを比較することで出力フ
ァイルの正当性が評価されるため、ユーザの負担が軽減
する。
力ファイルと各入力ファイルとを比較することで出力フ
ァイルの正当性が評価されるため、ユーザの負担が軽減
する。
【0015】上記第4の観点に係る構成においては、マ
ージ操作が関数毎に行われることにより、機能単位のマ
ージが実現される。上記第5の観点に係る構成において
は、上記一方のファイルに取り込まれる他方のファイル
の変更部分に常に同じパターン(定型パターン)に置換
すべきソースコードが含まれている場合には、その部分
が定型パターンに自動的に置換されることから、このよ
うな箇所をユーザが探して修正する必要がなくなる。
ージ操作が関数毎に行われることにより、機能単位のマ
ージが実現される。上記第5の観点に係る構成において
は、上記一方のファイルに取り込まれる他方のファイル
の変更部分に常に同じパターン(定型パターン)に置換
すべきソースコードが含まれている場合には、その部分
が定型パターンに自動的に置換されることから、このよ
うな箇所をユーザが探して修正する必要がなくなる。
【0016】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態につき説明する。 [第1の実施形態]図1は本発明の第1の実施形態に係
るソースコード自動バージョンアップ装置の全体構成を
示すブロック図である。この図1のソースコード自動バ
ージョンアップ装置は、2つのファイル間の差分を検出
するための差分検出用コマンド(diffコマンド)が
適用可能な計算機(情報処理装置)により実現されるも
のである。
施の形態につき説明する。 [第1の実施形態]図1は本発明の第1の実施形態に係
るソースコード自動バージョンアップ装置の全体構成を
示すブロック図である。この図1のソースコード自動バ
ージョンアップ装置は、2つのファイル間の差分を検出
するための差分検出用コマンド(diffコマンド)が
適用可能な計算機(情報処理装置)により実現されるも
のである。
【0017】図1において、1は外部記憶装置、例えば
磁気ディスク装置である。この磁気ディスク装置1(に
装着されている記憶媒体である磁気ディスク)には、フ
ァイル11,12-1,12-2が格納されているものとす
る。ここで、ファイル11は元ファイル、ファイル12
-1は元ファイル11から派生した第1の派生ファイル、
ファイル12-2は元ファイル11から派生した第2の派
生ファイルである。各ファイル11,12-1,12-2
は、図2に示すようにソースコードからなる。
磁気ディスク装置である。この磁気ディスク装置1(に
装着されている記憶媒体である磁気ディスク)には、フ
ァイル11,12-1,12-2が格納されているものとす
る。ここで、ファイル11は元ファイル、ファイル12
-1は元ファイル11から派生した第1の派生ファイル、
ファイル12-2は元ファイル11から派生した第2の派
生ファイルである。各ファイル11,12-1,12-2
は、図2に示すようにソースコードからなる。
【0018】2は本発明に直接関係する自動バージョン
アップ機構である。この自動バージョンアップ機構2
は、計算機(の中枢をなすCPU)が自動バージョンア
ッププログラムを実行することにより実現される。自動
バージョンアップ機構2は、ユーザにより指定される自
動バージョンアップに必要なファイル(ここでは、元フ
ァイルとそこから派生した2つの派生ファイル)を対象
に、そのファイル間の差異、対応関係などを示す情報
(以下、差分情報と称する)210を生成する差分情報
生成機構21、及び差分情報生成機構21で生成された
差分情報等をもとにソースコードのマージを行うマージ
機構22の2つの機能要素から構成される。
アップ機構である。この自動バージョンアップ機構2
は、計算機(の中枢をなすCPU)が自動バージョンア
ッププログラムを実行することにより実現される。自動
バージョンアップ機構2は、ユーザにより指定される自
動バージョンアップに必要なファイル(ここでは、元フ
ァイルとそこから派生した2つの派生ファイル)を対象
に、そのファイル間の差異、対応関係などを示す情報
(以下、差分情報と称する)210を生成する差分情報
生成機構21、及び差分情報生成機構21で生成された
差分情報等をもとにソースコードのマージを行うマージ
機構22の2つの機能要素から構成される。
【0019】図3は、自動バージョンアップに際し、元
ファイルとしてファイル11が、第1の派生ファイルと
してファイル12-1が、そして第2の派生ファイルとし
て派生ファイル12-2がそれぞれ指定された場合の、自
動バージョンアップ機構2における処理の流れとデータ
の流れを示す。
ファイルとしてファイル11が、第1の派生ファイルと
してファイル12-1が、そして第2の派生ファイルとし
て派生ファイル12-2がそれぞれ指定された場合の、自
動バージョンアップ機構2における処理の流れとデータ
の流れを示す。
【0020】まず、差分情報生成機構21には、指定さ
れた元ファイル11及び派生ファイル12-1,12-2が
磁気ディスク装置1から読み込まれる。差分情報生成機
構21は、磁気ディスク装置1から読み込んだファイル
間の差異、対応関係などを示す差分情報210を生成し
てマージ機構22に送る。このマージ機構22には、差
分情報210の他、派生ファイル12-1,12-2が入力
される。マージ機構22は、これら差分情報210及び
派生ファイル12-1,12-2をもとにソースコードのマ
ージを行って出力ファイル220を作成し、磁気ディス
ク装置1に出力する。
れた元ファイル11及び派生ファイル12-1,12-2が
磁気ディスク装置1から読み込まれる。差分情報生成機
構21は、磁気ディスク装置1から読み込んだファイル
間の差異、対応関係などを示す差分情報210を生成し
てマージ機構22に送る。このマージ機構22には、差
分情報210の他、派生ファイル12-1,12-2が入力
される。マージ機構22は、これら差分情報210及び
派生ファイル12-1,12-2をもとにソースコードのマ
ージを行って出力ファイル220を作成し、磁気ディス
ク装置1に出力する。
【0021】図4は差分情報生成機構21の内部の機能
構成を示す。差分情報生成機構21は、第1の派生ファ
イル(12-1)と元ファイル(11)とを比較して差分
情報211-1を生成する差分情報生成部212-1、元フ
ァイル(11)と第2の派生ファイル(12-2)とを比
較して差分情報211-2を生成する差分情報生成部21
2-2、及びこれら両差分情報211-1,211-2から最
終的に利用する(マージ機構22が利用する)差分情報
210を生成する差分情報生成部213から構成され
る。ここで差分情報生成部212-1,212-2は、差分
情報生成機構21内での第1段階の差分情報生成処理を
司り、差分情報生成部213は、第2段階の差分情報生
成処理を司る。
構成を示す。差分情報生成機構21は、第1の派生ファ
イル(12-1)と元ファイル(11)とを比較して差分
情報211-1を生成する差分情報生成部212-1、元フ
ァイル(11)と第2の派生ファイル(12-2)とを比
較して差分情報211-2を生成する差分情報生成部21
2-2、及びこれら両差分情報211-1,211-2から最
終的に利用する(マージ機構22が利用する)差分情報
210を生成する差分情報生成部213から構成され
る。ここで差分情報生成部212-1,212-2は、差分
情報生成機構21内での第1段階の差分情報生成処理を
司り、差分情報生成部213は、第2段階の差分情報生
成処理を司る。
【0022】図5は差分情報生成部212-1,212-2
の内部の機能構成を示す。差分情報生成部212-1,2
12-2は、図6に示す形式のdiffコマンドの実行に
より当該コマンドで指定される第1及び第2のファイル
(ソースファイル)間の差分を検出する差分検出部21
2a、及び当該差分検出部212aの出力(diffコ
マンドの出力)を差分情報211-1,211-2に変換す
る情報変換部212bから構成される。なお、diff
コマンドは、当該コマンドで指定される2つのファイル
を比較して調べ、そのファイル間に差異がある場合に
は、その差異の種類、位置及び差異のある部分の内容を
出力するためのコマンドである。
の内部の機能構成を示す。差分情報生成部212-1,2
12-2は、図6に示す形式のdiffコマンドの実行に
より当該コマンドで指定される第1及び第2のファイル
(ソースファイル)間の差分を検出する差分検出部21
2a、及び当該差分検出部212aの出力(diffコ
マンドの出力)を差分情報211-1,211-2に変換す
る情報変換部212bから構成される。なお、diff
コマンドは、当該コマンドで指定される2つのファイル
を比較して調べ、そのファイル間に差異がある場合に
は、その差異の種類、位置及び差異のある部分の内容を
出力するためのコマンドである。
【0023】次に、同実施形態における動作を説明す
る。まず、自動バージョンアップに際し、ユーザのキー
ボード操作等により、自動バージョンアップ機構2に対
して、元ファイルとしてファイル11が、第1の派生フ
ァイルとしてファイル12-1が、そして第2の派生ファ
イルとして派生ファイル12-2が、それぞれ指定された
ものとする。
る。まず、自動バージョンアップに際し、ユーザのキー
ボード操作等により、自動バージョンアップ機構2に対
して、元ファイルとしてファイル11が、第1の派生フ
ァイルとしてファイル12-1が、そして第2の派生ファ
イルとして派生ファイル12-2が、それぞれ指定された
ものとする。
【0024】この場合、自動バージョンアップ機構2内
の差分情報生成機構21は、磁気ディスク装置1から指
定された元ファイル11及び派生ファイル12-1,12
-2を読み込み、図7に示すように、元ファイル11と派
生ファイル12-1とを比較すると共に、元ファイル11
と派生ファイル12-2とを比較する。そして差分情報生
成機構21は、この比較結果から差分情報210を生成
してマージ機構22に出力する。
の差分情報生成機構21は、磁気ディスク装置1から指
定された元ファイル11及び派生ファイル12-1,12
-2を読み込み、図7に示すように、元ファイル11と派
生ファイル12-1とを比較すると共に、元ファイル11
と派生ファイル12-2とを比較する。そして差分情報生
成機構21は、この比較結果から差分情報210を生成
してマージ機構22に出力する。
【0025】次に、この差分情報生成機構21の動作の
詳細を説明する。本実施形態では、差分情報生成機構2
1での差分情報生成は2段階に分けて行われる。第1段
階の差分情報生成は、当該差分情報生成機構21内の差
分情報生成部212-1,212-2により、図6に示した
形式のdiffコマンドを用いて次のように行われる。
ここで、差分情報生成部212-1で用いられるdiff
コマンド(diffコマンド#1と称する)では、第1
のファイル(ソースファイル)として派生ファイル12
-1が、第2のファイル(ソースファイル)として元ファ
イル11が指定されるものとする。同様に、差分情報生
成部212-2で用いられるdiffコマンド(diff
コマンド#2と称する)では、第1のファイルとして元
ファイル11が、第2のファイルとして派生ファイル1
2-2が指定されるものとする。
詳細を説明する。本実施形態では、差分情報生成機構2
1での差分情報生成は2段階に分けて行われる。第1段
階の差分情報生成は、当該差分情報生成機構21内の差
分情報生成部212-1,212-2により、図6に示した
形式のdiffコマンドを用いて次のように行われる。
ここで、差分情報生成部212-1で用いられるdiff
コマンド(diffコマンド#1と称する)では、第1
のファイル(ソースファイル)として派生ファイル12
-1が、第2のファイル(ソースファイル)として元ファ
イル11が指定されるものとする。同様に、差分情報生
成部212-2で用いられるdiffコマンド(diff
コマンド#2と称する)では、第1のファイルとして元
ファイル11が、第2のファイルとして派生ファイル1
2-2が指定されるものとする。
【0026】まず差分情報生成部212-1内の差分検出
部212aは、diffコマンド#1で指定された2つ
の入力ファイル、即ち派生ファイル12-1と元ファイル
11を先頭行より順次比較してその差異を調べ、そのフ
ァイル間に差異がある場合には、その差異の種類、位置
及び差異のある部分の内容をdiffコマンド出力とし
て送出する。この差分情報生成部212-1内の差分検出
部212aからのdiffコマンド出力は、同じ差分情
報生成部212-1内の情報変換部212bで受け取られ
る。
部212aは、diffコマンド#1で指定された2つ
の入力ファイル、即ち派生ファイル12-1と元ファイル
11を先頭行より順次比較してその差異を調べ、そのフ
ァイル間に差異がある場合には、その差異の種類、位置
及び差異のある部分の内容をdiffコマンド出力とし
て送出する。この差分情報生成部212-1内の差分検出
部212aからのdiffコマンド出力は、同じ差分情
報生成部212-1内の情報変換部212bで受け取られ
る。
【0027】一方、差分情報生成部212-2内の差分検
出部212aは、diffコマンド#2で指定された2
つの入力ファイル、即ち元ファイル11と派生ファイル
12-2を先頭行より順次比較してその差異を調べ、その
ファイル間に差異がある場合には、その差異の種類、位
置及び差異のある部分の内容をdiffコマンド出力と
して送出する。この差分情報生成部212-2内の差分検
出部212aからのdiffコマンド出力は、同じ差分
情報生成部212-2内の情報変換部212bで受け取ら
れる。
出部212aは、diffコマンド#2で指定された2
つの入力ファイル、即ち元ファイル11と派生ファイル
12-2を先頭行より順次比較してその差異を調べ、その
ファイル間に差異がある場合には、その差異の種類、位
置及び差異のある部分の内容をdiffコマンド出力と
して送出する。この差分情報生成部212-2内の差分検
出部212aからのdiffコマンド出力は、同じ差分
情報生成部212-2内の情報変換部212bで受け取ら
れる。
【0028】ここで、diffコマンド出力の一例を図
8に示す。図中、符号81で示されるデータ“2,4c
1,3”は、第1のファイルの2行目から4行目が、第
2のファイルの1行目から3行目までと異なる(ここで
は置換“c”により異なる)ことを示す差異種類・位置
(行の対応)情報である。また、符号82で示される
“<line 2”から“>third line”ま
でのデータ群のうち、区切り記号83より上側のデータ
群は、第1ファイルの2行目から4行目の内容を示し、
区切り記号83より下側のデータ群は、第2のファイル
の1行目から3行目までの内容を示す。なお、差異の種
類として、置換を示す上記“c”のほかに、追加を示す
“a”と削除を示す“d”がある。
8に示す。図中、符号81で示されるデータ“2,4c
1,3”は、第1のファイルの2行目から4行目が、第
2のファイルの1行目から3行目までと異なる(ここで
は置換“c”により異なる)ことを示す差異種類・位置
(行の対応)情報である。また、符号82で示される
“<line 2”から“>third line”ま
でのデータ群のうち、区切り記号83より上側のデータ
群は、第1ファイルの2行目から4行目の内容を示し、
区切り記号83より下側のデータ群は、第2のファイル
の1行目から3行目までの内容を示す。なお、差異の種
類として、置換を示す上記“c”のほかに、追加を示す
“a”と削除を示す“d”がある。
【0029】さて、差分情報生成部212-1,212-2
内の各情報変換部212bは、同じ差分情報生成部21
2-1,212-2内の差分検出部212aからのdiff
コマンド出力を受け取ると、そのdiffコマンド出力
から、差異の種類及び位置の情報を取り出し、図9に示
すような形式の差分情報(の構造体)内の対応する情報
領域に設定する。即ち情報変換部212bは、例えば図
8のdiffコマンド出力の場合であれば、差異種類・
位置情報81としての“2,4c1,3”中の(第1フ
ァイルと第2ファイルの間の)差異の種類“c”(置
換)をタイプ情報の領域に設定し、“2,4”を第1フ
ァイルの該当部分の開始行S1,終了行E1の領域に設
定し、“1,3”を第2ファイルの該当部分の開始行S
2,終了行E2の領域に設定する。なお、図9の差分情
報(の構造体)には、重なり/包含情報の領域が設けら
れているが、この段階(第1の段階)では、当該重なり
/包含情報の領域への情報設定は行われない。
内の各情報変換部212bは、同じ差分情報生成部21
2-1,212-2内の差分検出部212aからのdiff
コマンド出力を受け取ると、そのdiffコマンド出力
から、差異の種類及び位置の情報を取り出し、図9に示
すような形式の差分情報(の構造体)内の対応する情報
領域に設定する。即ち情報変換部212bは、例えば図
8のdiffコマンド出力の場合であれば、差異種類・
位置情報81としての“2,4c1,3”中の(第1フ
ァイルと第2ファイルの間の)差異の種類“c”(置
換)をタイプ情報の領域に設定し、“2,4”を第1フ
ァイルの該当部分の開始行S1,終了行E1の領域に設
定し、“1,3”を第2ファイルの該当部分の開始行S
2,終了行E2の領域に設定する。なお、図9の差分情
報(の構造体)には、重なり/包含情報の領域が設けら
れているが、この段階(第1の段階)では、当該重なり
/包含情報の領域への情報設定は行われない。
【0030】このようにして、差分情報生成部212-
1,212-2内の差分検出部212aからの各diff
コマンド出力が、当該差分情報生成部212-1,212
-2内の情報変換部212bにより、図9に示した形式の
(構造体からなる)差分情報211-1,211-2に変換
される。この差分情報211-1,211-2は、差分情報
生成部213に送られる。
1,212-2内の差分検出部212aからの各diff
コマンド出力が、当該差分情報生成部212-1,212
-2内の情報変換部212bにより、図9に示した形式の
(構造体からなる)差分情報211-1,211-2に変換
される。この差分情報211-1,211-2は、差分情報
生成部213に送られる。
【0031】差分情報生成部213は、差分情報生成部
212-1,212-2(内の情報変換部212b)からの
差分情報211-1,211-2を受け取ると、当該2種類
の差分情報211-1,211-2をもとに、派生ファイル
12-1と派生ファイル12-2の行の対応をとって派生フ
ァイル12-1,12-2間の差分情報(ここでは差分情報
210)を生成する第2段階の差分情報生成を行う。こ
こで差分情報211-1は、派生ファイル12-1と元ファ
イル11との間の差分情報であり、差分情報211-2
は、元ファイル11と派生ファイル12-2との間の差分
情報であることから、第2の段階では、図10に示すよ
うに、元ファイル11を介して派生ファイル12-1と派
生ファイル12-2の行の対応がとられることになる。
212-1,212-2(内の情報変換部212b)からの
差分情報211-1,211-2を受け取ると、当該2種類
の差分情報211-1,211-2をもとに、派生ファイル
12-1と派生ファイル12-2の行の対応をとって派生フ
ァイル12-1,12-2間の差分情報(ここでは差分情報
210)を生成する第2段階の差分情報生成を行う。こ
こで差分情報211-1は、派生ファイル12-1と元ファ
イル11との間の差分情報であり、差分情報211-2
は、元ファイル11と派生ファイル12-2との間の差分
情報であることから、第2の段階では、図10に示すよ
うに、元ファイル11を介して派生ファイル12-1と派
生ファイル12-2の行の対応がとられることになる。
【0032】図10では、派生ファイル12-1の行A,
Bが元ファイル11の行a,bに対応し、この元ファイ
ル11の行a,bが派生ファイル12-2の行a′,b′
に対応している様子が示されている。
Bが元ファイル11の行a,bに対応し、この元ファイ
ル11の行a,bが派生ファイル12-2の行a′,b′
に対応している様子が示されている。
【0033】ここで、例えば行Aは、元ファイル11
(ソースファイル)に斜線で示したソースコード部分1
01を追加した行番号の先頭である。派生ファイル12
-1は、元ファイル11に斜線で示したソースコード部分
101を追加しただけであるので、行Aから行aへの対
応は容易に求めることができる。具体的には、図10の
例では、図9に示した形式の差分情報211-1の開始行
S1,終了行E1の対として、斜線のソースコード部分
101の開始行(=行A),終了行が設定され、開始行
S2,終了行E2の対として、元ファイル11の行aが
設定されることから、その差分情報211-1により行A
から行aへの対応関係が求められる。
(ソースファイル)に斜線で示したソースコード部分1
01を追加した行番号の先頭である。派生ファイル12
-1は、元ファイル11に斜線で示したソースコード部分
101を追加しただけであるので、行Aから行aへの対
応は容易に求めることができる。具体的には、図10の
例では、図9に示した形式の差分情報211-1の開始行
S1,終了行E1の対として、斜線のソースコード部分
101の開始行(=行A),終了行が設定され、開始行
S2,終了行E2の対として、元ファイル11の行aが
設定されることから、その差分情報211-1により行A
から行aへの対応関係が求められる。
【0034】一方、元ファイル11から派生ファイル1
2-2への変更は単純な追加だけではないものとする。こ
の場合でも、派生ファイル12-2は元ファイル11を変
更して生成されたものであることから、差分情報211
-2により行の対応を求めることができる。
2-2への変更は単純な追加だけではないものとする。こ
の場合でも、派生ファイル12-2は元ファイル11を変
更して生成されたものであることから、差分情報211
-2により行の対応を求めることができる。
【0035】以上のことから、図10に示した対応関係
は、第1の段階で差分情報生成部212-1,212-2に
より生成された差分情報211-1,211-2を対応付け
ることで調べられる。即ち差分情報生成部213は、差
分情報211-1,211-2により求められる行A→行a
→行a′の対応から、行A→行a′の関係を求め、第2
段階の差分情報210として生成する。この差分情報2
10は、差分情報211-1,211-2と同様に、図9に
示したデータ形式を有している。但し、差分情報210
が生成される第2段階では、差分情報211-1,211
-2が生成される第1段階と異なって、重なり/包含情報
領域への情報設定がなされている。この差分情報210
の重なり/包含情報領域に設定される情報は、元ファイ
ル11から派生ファイル12-1への変更部分(元ファイ
ル11に対して変更を施すことで派生ファイル12-1を
生成した際の変更部分)が、元ファイル11から派生フ
ァイル12-2への変更部分に重なるか否か、或いは含ま
れるか否かを示すものである。
は、第1の段階で差分情報生成部212-1,212-2に
より生成された差分情報211-1,211-2を対応付け
ることで調べられる。即ち差分情報生成部213は、差
分情報211-1,211-2により求められる行A→行a
→行a′の対応から、行A→行a′の関係を求め、第2
段階の差分情報210として生成する。この差分情報2
10は、差分情報211-1,211-2と同様に、図9に
示したデータ形式を有している。但し、差分情報210
が生成される第2段階では、差分情報211-1,211
-2が生成される第1段階と異なって、重なり/包含情報
領域への情報設定がなされている。この差分情報210
の重なり/包含情報領域に設定される情報は、元ファイ
ル11から派生ファイル12-1への変更部分(元ファイ
ル11に対して変更を施すことで派生ファイル12-1を
生成した際の変更部分)が、元ファイル11から派生フ
ァイル12-2への変更部分に重なるか否か、或いは含ま
れるか否かを示すものである。
【0036】ここで、重なり/包含情報領域への情報設
定について、図11を参照して説明する。なお、図11
中の斜線部分は元ファイル11に対する変更部分を示
す。まず、元ファイル11を変更して派生ファイル12
-1と派生ファイル12-2を生成した場合、元ファイル1
1から派生ファイル12-1への変更部分と元ファイル1
1から派生ファイル12-2への変更部分の少なくとも一
部が、図11(a)に示すように互いに重なる場合と、
元ファイル11から派生ファイル12-1への変更部分
が、図11(b)に示すように派生ファイル12-2への
変更部分に包含される場合がある。
定について、図11を参照して説明する。なお、図11
中の斜線部分は元ファイル11に対する変更部分を示
す。まず、元ファイル11を変更して派生ファイル12
-1と派生ファイル12-2を生成した場合、元ファイル1
1から派生ファイル12-1への変更部分と元ファイル1
1から派生ファイル12-2への変更部分の少なくとも一
部が、図11(a)に示すように互いに重なる場合と、
元ファイル11から派生ファイル12-1への変更部分
が、図11(b)に示すように派生ファイル12-2への
変更部分に包含される場合がある。
【0037】そこで差分情報生成部213は、派生ファ
イル12-1の変更開始行が派生ファイル12-2の変更開
始行より前で、且つ派生ファイル12-1の変更終了行が
派生ファイル12-2の変更開始行と変更終了行の間、も
しくは、派生ファイル12-1の変更開始行が派生ファイ
ル12-2の変更開始行と変更終了行の間で、且つ派生フ
ァイル12-1の変更終了行が派生ファイル12-2の変更
終了行より後という条件が成立する場合に(図11
(a)参照)、重なりと判定し、その情報を差分情報2
10中の重なり/包含情報領域に設定する。
イル12-1の変更開始行が派生ファイル12-2の変更開
始行より前で、且つ派生ファイル12-1の変更終了行が
派生ファイル12-2の変更開始行と変更終了行の間、も
しくは、派生ファイル12-1の変更開始行が派生ファイ
ル12-2の変更開始行と変更終了行の間で、且つ派生フ
ァイル12-1の変更終了行が派生ファイル12-2の変更
終了行より後という条件が成立する場合に(図11
(a)参照)、重なりと判定し、その情報を差分情報2
10中の重なり/包含情報領域に設定する。
【0038】同様に差分情報生成部213は、派生ファ
イル12-1の変更開始行及び変更終了行が、いずれも派
生ファイル12-2の変更開始行と変更終了行との間であ
るという条件が成立する場合に(図11(b)参照)、
包含と判定し、その情報を差分情報210中の重なり/
包含情報領域に設定する。
イル12-1の変更開始行及び変更終了行が、いずれも派
生ファイル12-2の変更開始行と変更終了行との間であ
るという条件が成立する場合に(図11(b)参照)、
包含と判定し、その情報を差分情報210中の重なり/
包含情報領域に設定する。
【0039】ところで、変更部分が複数存在する場合、
図9に示した形式の差分情報がその変更箇所の数だけ生
成される。そこで本実施形態では、差分情報は、図12
に示すように、その構造体(図9の形式の基本単位の差
分情報を格納する構造体)をポインタ(前ポインタと次
ポインタ)によって双方向にリンクしたリスト構造を用
いて表現される。この差分情報の構造体は、必要になる
と、例えばオペレーティングシステムが提供するメモリ
割当機能を使用して割り当てられ、図12に示したよう
な差分情報のリスト構造(リンク構造)に追加される。
図9に示した形式の差分情報がその変更箇所の数だけ生
成される。そこで本実施形態では、差分情報は、図12
に示すように、その構造体(図9の形式の基本単位の差
分情報を格納する構造体)をポインタ(前ポインタと次
ポインタ)によって双方向にリンクしたリスト構造を用
いて表現される。この差分情報の構造体は、必要になる
と、例えばオペレーティングシステムが提供するメモリ
割当機能を使用して割り当てられ、図12に示したよう
な差分情報のリスト構造(リンク構造)に追加される。
【0040】図12において、差分情報構造体中の前ポ
インタ(前へのリンク)は、当該差分情報構造体の直前
にリンクされた差分情報構造体へのポインタである。同
様に、差分情報構造体中の次ポインタ(次へのリンク)
は、当該差分情報構造体の直後にリンクされた差分情報
構造体へのポインタである。これらのポインタは、つな
がる先のない場合には、その旨を示す特別のポインタ
(NULLポインタ)に設定される。明らかなように、
前ポインタがNULLの場合には、該当する構造体が差
分情報リストの先頭であることを示す。同様に、次ポイ
ンタがNULLの場合には、該当する構造体が差分情報
リストの最後尾であることを示す。
インタ(前へのリンク)は、当該差分情報構造体の直前
にリンクされた差分情報構造体へのポインタである。同
様に、差分情報構造体中の次ポインタ(次へのリンク)
は、当該差分情報構造体の直後にリンクされた差分情報
構造体へのポインタである。これらのポインタは、つな
がる先のない場合には、その旨を示す特別のポインタ
(NULLポインタ)に設定される。明らかなように、
前ポインタがNULLの場合には、該当する構造体が差
分情報リストの先頭であることを示す。同様に、次ポイ
ンタがNULLの場合には、該当する構造体が差分情報
リストの最後尾であることを示す。
【0041】本実施形態では、第1段階及び第2段階の
各差分情報生成において保持すべき情報が異なるが、差
分情報構造体のテンプレート(形)は同じものを用いて
いる。そして、各段階で使用されないメンバ(情報領
域)には例えば“0”(ポインタの場合にはNULL)
を格納するようにしている。
各差分情報生成において保持すべき情報が異なるが、差
分情報構造体のテンプレート(形)は同じものを用いて
いる。そして、各段階で使用されないメンバ(情報領
域)には例えば“0”(ポインタの場合にはNULL)
を格納するようにしている。
【0042】なお本実施形態では、差分情報(の構造
体)中のタイプ情報領域には、有効な値が設定されてい
るが、使用されていない。その理由は、元ファイル11
から派生ファイル12-1を生成する段階で行われる変更
は追加(“a”)のみを原則としているためであり、自
動バージョンアップ機構2においても追加のみの場合を
対象に処理を行うように構成されている。
体)中のタイプ情報領域には、有効な値が設定されてい
るが、使用されていない。その理由は、元ファイル11
から派生ファイル12-1を生成する段階で行われる変更
は追加(“a”)のみを原則としているためであり、自
動バージョンアップ機構2においても追加のみの場合を
対象に処理を行うように構成されている。
【0043】以上に述べた(差分情報生成機構21内
の)差分情報生成部213での第2段階の差分情報生成
処理の手順を図13のフローチャートに示す。この図1
3のフローチャートに示すように、差分情報生成部21
3は、差分情報生成部212-1,212-2により生成さ
れた(図12に示したような構造の)差分情報211-
1,211-2を参照し、図10に示したような、元ファ
イル11を介して派生ファイル12-1と派生ファイル1
2-2の行番号を対応付ける操作を行い(ステップS
1)、対応する行があるならば(ステップS2)、その
行番号の対応情報を図9に示した差分情報の構造体に格
納する(ステップS3)。この際、差分情報生成部21
3は、前記した重なり/包含のチェックを行い、その結
果に応じて差分情報の構造体中の重なり/包含情報領域
への情報設定を行う。差分情報生成部213は、以上の
処理を、差分情報211-1,211-2の最後まで(ステ
ップS4)繰り返す。なお、対応する行がない場合に
は、エラーメッセージが表示される(ステップS5)。
の)差分情報生成部213での第2段階の差分情報生成
処理の手順を図13のフローチャートに示す。この図1
3のフローチャートに示すように、差分情報生成部21
3は、差分情報生成部212-1,212-2により生成さ
れた(図12に示したような構造の)差分情報211-
1,211-2を参照し、図10に示したような、元ファ
イル11を介して派生ファイル12-1と派生ファイル1
2-2の行番号を対応付ける操作を行い(ステップS
1)、対応する行があるならば(ステップS2)、その
行番号の対応情報を図9に示した差分情報の構造体に格
納する(ステップS3)。この際、差分情報生成部21
3は、前記した重なり/包含のチェックを行い、その結
果に応じて差分情報の構造体中の重なり/包含情報領域
への情報設定を行う。差分情報生成部213は、以上の
処理を、差分情報211-1,211-2の最後まで(ステ
ップS4)繰り返す。なお、対応する行がない場合に
は、エラーメッセージが表示される(ステップS5)。
【0044】さて、(差分情報生成機構21内の)差分
情報生成部213での第2段階の差分情報生成処理で生
成された差分情報210はマージ機構22に送られる。
マージ機構22には、この差分情報210の生成のもと
になった派生ファイル12-1,12-2も送られる。マー
ジ機構22は、これら差分情報210及び派生ファイル
12-1,12-2をもとに、派生ファイル12-2に対して
派生ファイル12-1の変更部分を追加していく形で出力
ファイル220を作成するマージ操作を行う。以下、こ
のマージ機構22によるマージ操作の詳細を、図14の
動作説明図と図15及び図16のフローチャートを参照
して説明する。
情報生成部213での第2段階の差分情報生成処理で生
成された差分情報210はマージ機構22に送られる。
マージ機構22には、この差分情報210の生成のもと
になった派生ファイル12-1,12-2も送られる。マー
ジ機構22は、これら差分情報210及び派生ファイル
12-1,12-2をもとに、派生ファイル12-2に対して
派生ファイル12-1の変更部分を追加していく形で出力
ファイル220を作成するマージ操作を行う。以下、こ
のマージ機構22によるマージ操作の詳細を、図14の
動作説明図と図15及び図16のフローチャートを参照
して説明する。
【0045】まずマージ機構22は、(差分情報生成機
構21内の)差分情報生成部213での第2段階の差分
情報生成処理で生成された差分情報210の示す行番号
対応情報に従って、派生ファイル12-2のソースコード
のうち、派生ファイル12-1の変更開始行に対応する行
の直前(追加部分の直前)まで(図14の例では、派生
ファイル12-2中の先頭から始まるソースコード無変更
部分13a)を、出力ファイル220の一部(ここでは
先頭部分)として磁気ディスク装置1に出力する(ステ
ップS11)。
構21内の)差分情報生成部213での第2段階の差分
情報生成処理で生成された差分情報210の示す行番号
対応情報に従って、派生ファイル12-2のソースコード
のうち、派生ファイル12-1の変更開始行に対応する行
の直前(追加部分の直前)まで(図14の例では、派生
ファイル12-2中の先頭から始まるソースコード無変更
部分13a)を、出力ファイル220の一部(ここでは
先頭部分)として磁気ディスク装置1に出力する(ステ
ップS11)。
【0046】次にマージ機構22は、派生ファイル12
-1の変更部分の出力処理(ステップS12)を次のよう
に行う。まずマージ機構22は、該当する差分情報21
0の構造体中の重なり/包含情報を調べ(ステップS2
1)、(図11に示したような)重なりまたは包含が発
生している場合には、その旨を示すコメント及び特定の
文(ここで#ifdef文)を出力ファイル220の後
続情報として磁気ディスク装置1に出力する(ステップ
S22)。一方、重なりまたは包含のいずれも発生して
いない場合には、このステップS22はスキップされ
る。
-1の変更部分の出力処理(ステップS12)を次のよう
に行う。まずマージ機構22は、該当する差分情報21
0の構造体中の重なり/包含情報を調べ(ステップS2
1)、(図11に示したような)重なりまたは包含が発
生している場合には、その旨を示すコメント及び特定の
文(ここで#ifdef文)を出力ファイル220の後
続情報として磁気ディスク装置1に出力する(ステップ
S22)。一方、重なりまたは包含のいずれも発生して
いない場合には、このステップS22はスキップされ
る。
【0047】次にマージ機構22は、派生ファイル12
-1の変更開始行から(当該変更開始行と対をなす)変更
終了行までの変更部分(図14の例では、派生ファイル
12-1中の変更開始行SAから変更終了行EAまでの変
更部分13A)のソースコードを出力ファイル220の
後続情報として磁気ディスク装置1に出力する(ステッ
プS23)。この際、磁気ディスク装置1に出力される
変更部分をなす各行の行頭には、自動バージョンアップ
機構2により追加されたことを示す所定のマーク、例え
ば“>>”が付加される。
-1の変更開始行から(当該変更開始行と対をなす)変更
終了行までの変更部分(図14の例では、派生ファイル
12-1中の変更開始行SAから変更終了行EAまでの変
更部分13A)のソースコードを出力ファイル220の
後続情報として磁気ディスク装置1に出力する(ステッ
プS23)。この際、磁気ディスク装置1に出力される
変更部分をなす各行の行頭には、自動バージョンアップ
機構2により追加されたことを示す所定のマーク、例え
ば“>>”が付加される。
【0048】次にマージ機構22は、再び上記した差記
分情報210の構造体中の重なり/包含情報を調べ(ス
テップS24)、重なりまたは包含が発生している場合
には、その旨を示すコメント及び上記ステップS22で
開いた#ifdefを閉じるための特定の文(ここで#
endif文)を出力ファイル220の後続情報として
磁気ディスク装置1に出力する(ステップS25)。一
方、重なりまたは包含のいずれも発生していない場合に
は、このステップS25はスキップされる。
分情報210の構造体中の重なり/包含情報を調べ(ス
テップS24)、重なりまたは包含が発生している場合
には、その旨を示すコメント及び上記ステップS22で
開いた#ifdefを閉じるための特定の文(ここで#
endif文)を出力ファイル220の後続情報として
磁気ディスク装置1に出力する(ステップS25)。一
方、重なりまたは包含のいずれも発生していない場合に
は、このステップS25はスキップされる。
【0049】以上により、ステップS12における派生
ファイル12-1の変更部分の出力処理は終了となる。マ
ージ機構22は、一連の変更部分出力処理(ステップS
12)を終了すると、派生ファイル12-1での変更部分
が未だ残っているか否かを調べ(ステップS13)、残
っているならば、ステップS11に戻る。
ファイル12-1の変更部分の出力処理は終了となる。マ
ージ機構22は、一連の変更部分出力処理(ステップS
12)を終了すると、派生ファイル12-1での変更部分
が未だ残っているか否かを調べ(ステップS13)、残
っているならば、ステップS11に戻る。
【0050】このようにしてマージ機構22は、派生フ
ァイル12-1の終りまで(ステップS13)、ステップ
S11,S12を繰り返す。これにより、図14の例で
は、派生ファイル12-2中の無変更部分13bと派生フ
ァイル12-1中の変更開始行SBから変更終了行EBま
での変更部分13Bとが続けて出力される。
ァイル12-1の終りまで(ステップS13)、ステップ
S11,S12を繰り返す。これにより、図14の例で
は、派生ファイル12-2中の無変更部分13bと派生フ
ァイル12-1中の変更開始行SBから変更終了行EBま
での変更部分13Bとが続けて出力される。
【0051】そして派生ファイル12-1での変更部分を
全て処理すると、マージ機構22は、派生ファイル12
-2中の残りの無変更部分(図14の例では、派生ファイ
ル12-2中の無変更部分13c)を出力ファイル220
の最後の情報として磁気ディスク装置1に出力する(ス
テップS14)。
全て処理すると、マージ機構22は、派生ファイル12
-2中の残りの無変更部分(図14の例では、派生ファイ
ル12-2中の無変更部分13c)を出力ファイル220
の最後の情報として磁気ディスク装置1に出力する(ス
テップS14)。
【0052】以上の結果、磁気ディスク装置1には、元
ファイル11から派生した2つの派生ファイル12-1,
12-2のうちの一方の派生ファイル12-2を基本とし、
そのソースコードにもう一方の派生ファイル12-1での
変更部分を追加していく形でマージされた新バージョン
のソースコードの出力ファイル220が生成される。
ファイル11から派生した2つの派生ファイル12-1,
12-2のうちの一方の派生ファイル12-2を基本とし、
そのソースコードにもう一方の派生ファイル12-1での
変更部分を追加していく形でマージされた新バージョン
のソースコードの出力ファイル220が生成される。
【0053】このように本実施形態では、ソースコード
のマージが自動的に行われる。但し、ここでのマージの
方法においては、既に述べたように、ファイルの中身に
ついて一切考慮していない。この場合、作成されたファ
イル(出力ファイル220)の妥当性については保証さ
れないことから、ユーザが改めてチェックを行う必要が
ある。
のマージが自動的に行われる。但し、ここでのマージの
方法においては、既に述べたように、ファイルの中身に
ついて一切考慮していない。この場合、作成されたファ
イル(出力ファイル220)の妥当性については保証さ
れないことから、ユーザが改めてチェックを行う必要が
ある。
【0054】そこで本実施形態では、ユーザによる上記
の妥当性のチェックを可能とするために、既に述べたよ
うに、マージ動作で追加したソースコード変更部分の各
行の行頭に特別のマーク“>>”を付加している。
の妥当性のチェックを可能とするために、既に述べたよ
うに、マージ動作で追加したソースコード変更部分の各
行の行頭に特別のマーク“>>”を付加している。
【0055】このマーク“>>”を付加することで、出
力ファイル220中の追加部分を、テキストエディタな
どを用いて簡単に発見できる。しかも、ユーザがチェッ
クして上記マークを削除しない限り、コンパイラにおい
て上記マークをエラーと判断することから、出力ファイ
ル220をコンパイルできない。このためユーザは、自
動バージョンアップ機構2(中のマージ機構22)によ
って追加された行(ソースコード行)の正当性を評価
し、編集を行わなければならない。この機能により、ユ
ーザにより正当性が評価されていないソースコードを誤
って使用してしまうことが防止できる。
力ファイル220中の追加部分を、テキストエディタな
どを用いて簡単に発見できる。しかも、ユーザがチェッ
クして上記マークを削除しない限り、コンパイラにおい
て上記マークをエラーと判断することから、出力ファイ
ル220をコンパイルできない。このためユーザは、自
動バージョンアップ機構2(中のマージ機構22)によ
って追加された行(ソースコード行)の正当性を評価
し、編集を行わなければならない。この機能により、ユ
ーザにより正当性が評価されていないソースコードを誤
って使用してしまうことが防止できる。
【0056】以上に述べたように本実施形態において
は、次に列挙する効果を得ることができる。 (1)元ファイル11から派生した2つの派生ファイル
12-1,12-2のうちの一方(ここでは派生ファイル1
2-2)を基本とし、そのソースコードにもう一方(ここ
では派生ファイル12-1)の変更部分を追加していく形
でマージを行うことができる。これにより、マージ後の
ソースコードでの不具合の発生を減少することができ
る。 (2)元ファイル11を参照することにより、派生ファ
イル12-1と派生ファイル12-2がそれぞれ独自に変更
を行った箇所を特定できる。また、それにより変更の衝
突箇所を特定できる。 (3)マージ操作が一括処理で行われ、且つそのマージ
操作で追加された部分については、その旨を示すマーク
がソースコード上に残されるため、変更箇所の正当性が
簡単に検証できる。
は、次に列挙する効果を得ることができる。 (1)元ファイル11から派生した2つの派生ファイル
12-1,12-2のうちの一方(ここでは派生ファイル1
2-2)を基本とし、そのソースコードにもう一方(ここ
では派生ファイル12-1)の変更部分を追加していく形
でマージを行うことができる。これにより、マージ後の
ソースコードでの不具合の発生を減少することができ
る。 (2)元ファイル11を参照することにより、派生ファ
イル12-1と派生ファイル12-2がそれぞれ独自に変更
を行った箇所を特定できる。また、それにより変更の衝
突箇所を特定できる。 (3)マージ操作が一括処理で行われ、且つそのマージ
操作で追加された部分については、その旨を示すマーク
がソースコード上に残されるため、変更箇所の正当性が
簡単に検証できる。
【0057】なお、前記実施形態では、派生ファイル1
2-1と元ファイル11とを比較して差分情報211-1を
生成すると共に、元ファイル11と派生ファイル12-2
とを比較して差分情報211-2を生成し、その2つの差
分情報211-1,211-2(をもとに生成される差分情
報210)を用いてマージするものとして説明したが、
以下に述べるようにこれに限るものではない。 [第2の実施形態]図17は本発明の第2の実施形態に
係る(ソースコード自動バージョンアップ装置の中心を
なす)自動バージョンアップ機構の機能構成を示すブロ
ック図である。なお、図7と同一部分には同一符号を付
してある。
2-1と元ファイル11とを比較して差分情報211-1を
生成すると共に、元ファイル11と派生ファイル12-2
とを比較して差分情報211-2を生成し、その2つの差
分情報211-1,211-2(をもとに生成される差分情
報210)を用いてマージするものとして説明したが、
以下に述べるようにこれに限るものではない。 [第2の実施形態]図17は本発明の第2の実施形態に
係る(ソースコード自動バージョンアップ装置の中心を
なす)自動バージョンアップ機構の機能構成を示すブロ
ック図である。なお、図7と同一部分には同一符号を付
してある。
【0058】この図17の構成の特徴は、図7中の差分
情報生成機構21に代えて、派生ファイル12-1と派生
ファイル12-2とを比較することで差分情報214を生
成する機能(を持つ図4中の差分情報生成部212-1,
212-2と同様の差分情報生成部)が追加された差分情
報生成機構31を設けると共に、図7中のマージ機構2
2に代えてマージ機構32を設けることで、元ファイル
12と各派生ファイル12-1,12-2の間の差分情報2
11-1,211-2だけを用いてマージする場合よりも、
マージ機構32において正確なマージが行えるようにし
た点にある。
情報生成機構21に代えて、派生ファイル12-1と派生
ファイル12-2とを比較することで差分情報214を生
成する機能(を持つ図4中の差分情報生成部212-1,
212-2と同様の差分情報生成部)が追加された差分情
報生成機構31を設けると共に、図7中のマージ機構2
2に代えてマージ機構32を設けることで、元ファイル
12と各派生ファイル12-1,12-2の間の差分情報2
11-1,211-2だけを用いてマージする場合よりも、
マージ機構32において正確なマージが行えるようにし
た点にある。
【0059】図17の構成において、差分情報生成機構
31に設けられた派生ファイル間の差分情報を生成する
差分情報生成部(図示せず)は、派生ファイル12-1と
派生ファイル12-2の間の差異を調べることで、その差
異及び対応する位置関係を示す差分情報214を生成
し、当該差分情報214を図9に示したデータ構造の差
分情報構造体に設定する。
31に設けられた派生ファイル間の差分情報を生成する
差分情報生成部(図示せず)は、派生ファイル12-1と
派生ファイル12-2の間の差異を調べることで、その差
異及び対応する位置関係を示す差分情報214を生成
し、当該差分情報214を図9に示したデータ構造の差
分情報構造体に設定する。
【0060】マージ機構32は、前記第1の実施形態に
おけるマージ機構22と同様のマージ処理を行う。即ち
マージ機構32は、上記2つの差分情報211-1,21
1-2をもとに生成された最終的な差分情報210から行
の対応関係を求め、派生ファイル12-2のソースコード
に派生ファイル12-1での変更部分を追加していくマー
ジを行って出力ファイル220を生成する。ここでマー
ジ機構32は、派生ファイル12-1と派生ファイル12
-2の間の差分情報214を参照することで、その差分情
報214と出力ファイル220との関係からマージの妥
当性を検証する。
おけるマージ機構22と同様のマージ処理を行う。即ち
マージ機構32は、上記2つの差分情報211-1,21
1-2をもとに生成された最終的な差分情報210から行
の対応関係を求め、派生ファイル12-2のソースコード
に派生ファイル12-1での変更部分を追加していくマー
ジを行って出力ファイル220を生成する。ここでマー
ジ機構32は、派生ファイル12-1と派生ファイル12
-2の間の差分情報214を参照することで、その差分情
報214と出力ファイル220との関係からマージの妥
当性を検証する。
【0061】このように本実施形態においては、派生フ
ァイル12-1と派生ファイル12-2の間の差分情報21
4を求め、この差分情報214をマージ機構32が参照
することで、マージの正当性の検証がより詳細に行える
ようになり、出力ファイル220の正確さが増加する。 [第3の実施形態]図18は本発明の第3の実施形態に
係る(ソースコード自動バージョンアップ装置の中心を
なす)自動バージョンアップ機構の機能構成を示すブロ
ック図である。なお、図7と同一部分には同一符号を付
してある。
ァイル12-1と派生ファイル12-2の間の差分情報21
4を求め、この差分情報214をマージ機構32が参照
することで、マージの正当性の検証がより詳細に行える
ようになり、出力ファイル220の正確さが増加する。 [第3の実施形態]図18は本発明の第3の実施形態に
係る(ソースコード自動バージョンアップ装置の中心を
なす)自動バージョンアップ機構の機能構成を示すブロ
ック図である。なお、図7と同一部分には同一符号を付
してある。
【0062】この図18の構成の特徴は、図7の構成
に、出力ファイル220の生成後に、そのファイル22
0の正当性を評価するための比較検証機構23を追加し
た点にある。
に、出力ファイル220の生成後に、そのファイル22
0の正当性を評価するための比較検証機構23を追加し
た点にある。
【0063】この図18の構成において、比較検証機構
23は、出力ファイル220と入力ファイルである元フ
ァイル11及び派生ファイル12-1,12-2を比較し、
出力ファイル220が正しくマージされているか否かを
検証する。
23は、出力ファイル220と入力ファイルである元フ
ァイル11及び派生ファイル12-1,12-2を比較し、
出力ファイル220が正しくマージされているか否かを
検証する。
【0064】このように本実施形態においては、比較検
証機構23が出力ファイル220の正当性を評価するこ
とから、ユーザが出力ファイル220を検証する際の作
業を低減させる。これにより、出力ファイル220の正
当性及び正確性が向上する。 [第4の実施形態]図19は本発明の第4の実施形態に
係るソースコード自動バージョンアップ装置の全体構成
を示すブロック図である。なお、図1と同一部分には同
一符号を付してある。
証機構23が出力ファイル220の正当性を評価するこ
とから、ユーザが出力ファイル220を検証する際の作
業を低減させる。これにより、出力ファイル220の正
当性及び正確性が向上する。 [第4の実施形態]図19は本発明の第4の実施形態に
係るソースコード自動バージョンアップ装置の全体構成
を示すブロック図である。なお、図1と同一部分には同
一符号を付してある。
【0065】この図19の構成の特徴は、図1中の自動
バージョンアップ機構2に代えて、関数リスト生成機構
43が追加された自動バージョンアップ機構4を用い、
差分情報の生成が関数毎に行えるようにした点にある。
バージョンアップ機構2に代えて、関数リスト生成機構
43が追加された自動バージョンアップ機構4を用い、
差分情報の生成が関数毎に行えるようにした点にある。
【0066】図19の構成において、自動バージョンア
ップ機構4内の関数リスト生成機構43は、(図1中の
差分情報生成機構21に相当する)差分情報生成機構4
1の前段に設けられている、この関数リスト生成機構4
3は、磁気ディスク装置1から読み出される各入力ファ
イル(元ファイル11及び派生ファイル12-1,12-
2)を関数毎に分解して入力ファイル別の関数リストを
生成し、差分情報生成機構41に渡す。
ップ機構4内の関数リスト生成機構43は、(図1中の
差分情報生成機構21に相当する)差分情報生成機構4
1の前段に設けられている、この関数リスト生成機構4
3は、磁気ディスク装置1から読み出される各入力ファ
イル(元ファイル11及び派生ファイル12-1,12-
2)を関数毎に分解して入力ファイル別の関数リストを
生成し、差分情報生成機構41に渡す。
【0067】差分情報生成機構41は、関数リスト生成
機構43から渡された関数リストを比較し、差分情報を
生成する。この差分情報生成の手順は、行毎ではなくて
関数毎の比較が行われる点を除けば、前記第1の実施形
態における差分情報生成機構21による差分情報生成と
同様である。差分情報生成機構41により生成された差
分情報はマージ機構42に渡される。
機構43から渡された関数リストを比較し、差分情報を
生成する。この差分情報生成の手順は、行毎ではなくて
関数毎の比較が行われる点を除けば、前記第1の実施形
態における差分情報生成機構21による差分情報生成と
同様である。差分情報生成機構41により生成された差
分情報はマージ機構42に渡される。
【0068】マージ機構42は、入力された差分情報を
もとに、ソースコードのマージを関数毎に行う。ここ
で、単一の関数が2個以上に分割されている場合、或い
はこれとは逆に2個以上の関数が単一の関数にまとめら
れている場合には、複数の関数間でのマージが行われ
る。
もとに、ソースコードのマージを関数毎に行う。ここ
で、単一の関数が2個以上に分割されている場合、或い
はこれとは逆に2個以上の関数が単一の関数にまとめら
れている場合には、複数の関数間でのマージが行われ
る。
【0069】このように本実施形態においては、マージ
を関数毎に行うことから、機能単位のマージが実現され
る。ある機能単位内での修正はミクロに見ると異なって
いても、マクロに見ると同様の処理を行っていることが
多いため、本実施形態のような機能単位のマージが有効
である。その結果、出力されるソースコードの正確性が
向上する。
を関数毎に行うことから、機能単位のマージが実現され
る。ある機能単位内での修正はミクロに見ると異なって
いても、マクロに見ると同様の処理を行っていることが
多いため、本実施形態のような機能単位のマージが有効
である。その結果、出力されるソースコードの正確性が
向上する。
【0070】なお、関数リスト生成機構43に、関数以
外の要素のリストを生成する処理機能を付加するように
してもよい。ここで関数以外の要素としては、変数、マ
クロ(置き換え)、コメント及びプリプロセッサ命令
(コンパイルの前にユーザが指示できる命令)などであ
る。この処理機能により関数以外のリストが生成された
場合には、差分情報生成機構41及びマージ機構42で
は、それらの情報も関数リストと同様に参照する。 [第5の実施形態]図20は本発明の第5の実施形態に
係るソースコード自動バージョンアップ装置の全体構成
を示すブロック図である。なお、図1と同一部分には同
一符号を付してある。
外の要素のリストを生成する処理機能を付加するように
してもよい。ここで関数以外の要素としては、変数、マ
クロ(置き換え)、コメント及びプリプロセッサ命令
(コンパイルの前にユーザが指示できる命令)などであ
る。この処理機能により関数以外のリストが生成された
場合には、差分情報生成機構41及びマージ機構42で
は、それらの情報も関数リストと同様に参照する。 [第5の実施形態]図20は本発明の第5の実施形態に
係るソースコード自動バージョンアップ装置の全体構成
を示すブロック図である。なお、図1と同一部分には同
一符号を付してある。
【0071】この図20の構成の特徴は、図1中の自動
バージョンアップ機構2に代えて、定型置換情報生成機
構53が追加された自動バージョンアップ機構5を用
い、常に同じパターンで変更が行われている箇所のパタ
ーン情報を定型置換情報として生成してマージ操作に利
用できるようにした点にある。
バージョンアップ機構2に代えて、定型置換情報生成機
構53が追加された自動バージョンアップ機構5を用
い、常に同じパターンで変更が行われている箇所のパタ
ーン情報を定型置換情報として生成してマージ操作に利
用できるようにした点にある。
【0072】図20の構成において、自動バージョンア
ップ機構5内の定型置換情報生成機構53は、磁気ディ
スク装置1から読み出される各入力ファイル間(元ファ
イル11と派生ファイル12-1の間、及び元ファイル1
1と派生ファイル12-2の間)で常に同じパターンで変
更が行われている箇所を探し、その箇所の元のソースコ
ードパターン(前パターンと称する)と変更後のパター
ン(後パターンと称する)の対応情報を定型置換情報5
30としてマージ機構52に渡す。このマージ機構52
には、差分情報生成機構21により前記第1の実施形態
と同様にして生成される差分情報210も渡される。
ップ機構5内の定型置換情報生成機構53は、磁気ディ
スク装置1から読み出される各入力ファイル間(元ファ
イル11と派生ファイル12-1の間、及び元ファイル1
1と派生ファイル12-2の間)で常に同じパターンで変
更が行われている箇所を探し、その箇所の元のソースコ
ードパターン(前パターンと称する)と変更後のパター
ン(後パターンと称する)の対応情報を定型置換情報5
30としてマージ機構52に渡す。このマージ機構52
には、差分情報生成機構21により前記第1の実施形態
と同様にして生成される差分情報210も渡される。
【0073】マージ機構52は、(前記第1の実施形態
におけるマージ機構22と同様に)差分情報生成機構2
1からの差分情報210に基づくマージ操作を行う。ま
たマージ機構52は、このマージ操作と並行して、定型
置換情報生成機構53からの定型置換情報530を参照
し、マージ操作の対象となるソースコード部分に当該定
型置換情報530中の前パターンに一致する箇所を検出
した際には、その箇所を定型置換すべき部分であるとし
て、その前パターンと対をなす定型置換情報530中の
後パターンである定型パターンへの置換を行う。
におけるマージ機構22と同様に)差分情報生成機構2
1からの差分情報210に基づくマージ操作を行う。ま
たマージ機構52は、このマージ操作と並行して、定型
置換情報生成機構53からの定型置換情報530を参照
し、マージ操作の対象となるソースコード部分に当該定
型置換情報530中の前パターンに一致する箇所を検出
した際には、その箇所を定型置換すべき部分であるとし
て、その前パターンと対をなす定型置換情報530中の
後パターンである定型パターンへの置換を行う。
【0074】このように本実施形態においては、例えば
派生ファイル12-1に新しい処理が追加され、その追加
部分に定型的に置換すべきソースコードが含まれている
場合であれば、その箇所が定型パターンに自動的に置換
されるため、ユーザがそのような箇所を探して修正する
必要がなくなる。
派生ファイル12-1に新しい処理が追加され、その追加
部分に定型的に置換すべきソースコードが含まれている
場合であれば、その箇所が定型パターンに自動的に置換
されるため、ユーザがそのような箇所を探して修正する
必要がなくなる。
【0075】
【発明の効果】以上詳述したように本発明によれば、ソ
ースコードの元ファイルから派生した2つの派生ファイ
ルの一方に、もう一方のファイルの変更箇所を取り込ん
で新バージョンを作成するマージ処理が自動的に行え
る。
ースコードの元ファイルから派生した2つの派生ファイ
ルの一方に、もう一方のファイルの変更箇所を取り込ん
で新バージョンを作成するマージ処理が自動的に行え
る。
【図1】本発明の第1の実施形態に係るソースコード自
動バージョンアップ装置の全体構成を示すブロック図。
動バージョンアップ装置の全体構成を示すブロック図。
【図2】図1中の各ファイル11,12-1,12-2がソ
ースコードからなることを説明するための図。
ースコードからなることを説明するための図。
【図3】図1中の自動バージョンアップ機構2における
処理の流れとデータの流れを説明するための図。
処理の流れとデータの流れを説明するための図。
【図4】図1中の差分情報生成機構21の内部の機能構
成を示すブロック図。
成を示すブロック図。
【図5】図4中の差分情報生成部212-1,212-2の
内部の機能構成を示すブロック図。
内部の機能構成を示すブロック図。
【図6】同実施形態で適用されるdiffコマンドの形
式を示す図。
式を示す図。
【図7】同実施形態で適用されるファイルマージ方法の
概要を説明するために、図1中の自動バージョンアップ
機構2の機能構成を示す図。。
概要を説明するために、図1中の自動バージョンアップ
機構2の機能構成を示す図。。
【図8】同実施形態におけるdiffコマンド出力の一
例を示す図。
例を示す図。
【図9】同実施形態で適用される差分情報(の構造体)
のデータ構造を示す図。
のデータ構造を示す図。
【図10】図4中の差分情報生成部213により、元フ
ァイルを介して2つの派生ファイルの行の対応をとる場
合の動作を説明するための図。
ァイルを介して2つの派生ファイルの行の対応をとる場
合の動作を説明するための図。
【図11】派生ファイル12-1,12-2の変更部分の重
なりと包含関係を説明するための図。
なりと包含関係を説明するための図。
【図12】同実施形態における差分情報の構造体のリス
ト構造を説明するための図。
ト構造を説明するための図。
【図13】図4中の差分情報生成部213により差分情
報210を生成する第2段階の差分情報生成処理を説明
するためのフローチャート。
報210を生成する第2段階の差分情報生成処理を説明
するためのフローチャート。
【図14】同実施形態におけるマージ機構22によるマ
ージ操作の動作説明図。
ージ操作の動作説明図。
【図15】マージ機構22によるマージ操作の手順を示
すフローチャート。
すフローチャート。
【図16】図15のフローチャート中の変更部分出力処
理(ステップS12)の詳細な手順を示すフローチャー
ト。
理(ステップS12)の詳細な手順を示すフローチャー
ト。
【図17】本発明の第2の実施形態に係る(ソースコー
ド自動バージョンアップ装置の中心をなす)自動バージ
ョンアップ機構の機能構成を示すブロック図。
ド自動バージョンアップ装置の中心をなす)自動バージ
ョンアップ機構の機能構成を示すブロック図。
【図18】本発明の第3の実施形態に係る(ソースコー
ド自動バージョンアップ装置の中心をなす)自動バージ
ョンアップ機構の機能構成を示すブロック図。
ド自動バージョンアップ装置の中心をなす)自動バージ
ョンアップ機構の機能構成を示すブロック図。
【図19】本発明の第4の実施形態に係るソースコード
自動バージョンアップ装置の全体構成を示すブロック
図。
自動バージョンアップ装置の全体構成を示すブロック
図。
【図20】本発明の第5の実施形態に係るソースコード
自動バージョンアップ装置の全体構成を示すブロック
図。
自動バージョンアップ装置の全体構成を示すブロック
図。
【図21】従来のファイルマージ方法の概要を説明する
ための図。
ための図。
1…磁気ディスク装置、2,4,5…自動バージョンア
ップ機構、11…元ファイル、12-1…派生ファイル
(第1の派生ファイル)、12-2…派生ファイル(第2
の派生ファイル)、21,31,41…差分情報生成機
構、22,32,42,52…マージ機構、23…比較
検証機構、43…関数リスト生成機構、53…定型置換
情報生成機構、210…差分情報(第3の差分情報)、
211-1…差分情報(第1の差分情報)、211-2…差
分情報(第2の差分情報)、212-1,212-2,21
3…差分情報生成部、212a…差分検出部、212b
…情報変換部、214…差分情報(第4の差分情報)、
220…出力ファイル、530…定型置換情報。
ップ機構、11…元ファイル、12-1…派生ファイル
(第1の派生ファイル)、12-2…派生ファイル(第2
の派生ファイル)、21,31,41…差分情報生成機
構、22,32,42,52…マージ機構、23…比較
検証機構、43…関数リスト生成機構、53…定型置換
情報生成機構、210…差分情報(第3の差分情報)、
211-1…差分情報(第1の差分情報)、211-2…差
分情報(第2の差分情報)、212-1,212-2,21
3…差分情報生成部、212a…差分検出部、212b
…情報変換部、214…差分情報(第4の差分情報)、
220…出力ファイル、530…定型置換情報。
Claims (10)
- 【請求項1】 ソースコードの元ファイルと当該元ファ
イルから派生した第1の派生ファイルの間の差異を調べ
て、対応する位置関係を示す第1の差分情報を生成する
と共に、前記元ファイルと当該元ファイルから派生した
第2の派生ファイルの間の差異を調べて、対応する位置
関係を示す第2の差分情報を生成する第1の工程と、 前記第1の工程で生成された第1及び第2の差分情報か
ら、前記第1及び第2の派生ファイル間の差異に対応す
る位置関係を示す第3の差分情報を生成する第2の工程
と、 前記第2の工程で生成された第3の差分情報と、前記第
1及び第2の派生ファイルをもとに、前記第1及び第2
の派生ファイルのいずれか一方のファイルに、他方のフ
ァイルの変更部分を取り込む形でソースコードのマージ
を行い、バージョンアップされた出力ファイルを生成す
る第3の工程とを具備することを特徴とするソースコー
ド自動バージョンアップ方法。 - 【請求項2】 前記第1及び第2の派生ファイル間の差
異を調べて、その差異に対応する位置関係を示す第4の
差分情報を生成する第4の工程を更に具備し、 前記第3の工程では前記第4の工程で生成された第4の
差分情報を参照することでマージの妥当性を検証するよ
うにしたことを特徴とする請求項1記載のソースコード
自動バージョンアップ方法。 - 【請求項3】 前記第3の工程で生成された出力ファイ
ルと、前記元ファイル、前記第1の派生ファイル及び前
記第2の派生ファイルとを比較することで、前記出力フ
ァイルが正しくマージされているか否かを検証する第4
の工程を更に具備することを特徴とする請求項1記載の
ソースコード自動バージョンアップ方法。 - 【請求項4】 ソースコードの元ファイル、当該元ファ
イルから派生した第1の派生ファイル及び第2の派生フ
ァイルを関数毎に分解してファイル別の関数リストを生
成する第1の工程と、 前記第1の工程で生成された前記元ファイルと前記第1
の派生ファイルの両関数リストの差異を調べて、対応す
る位置関係を示す第1の差分情報を生成すると共に、前
記元ファイルと前記第2の派生ファイルの両関数リスト
の差異を調べて、対応する位置関係を示す第2の差分情
報を生成する第2の工程と、 前記第2の工程で生成された第1及び第2の差分情報か
ら、前記第1及び第2の派生ファイルの両関数リスト間
の差異に対応する位置関係を示す第3の差分情報を生成
する第3の工程と、 前記第3の工程で生成された第3の差分情報と、前記第
1及び第2の派生ファイルをもとに、前記第1及び第2
の派生ファイルのいずれか一方のファイルに、他方のフ
ァイルの変更部分を取り込む形でソースコードのマージ
を行い、バージョンアップされた出力ファイルを生成す
る第4の工程とを具備することを特徴とするソースコー
ド自動バージョンアップ方法。 - 【請求項5】 ソースコードの元ファイルと当該元ファ
イルから派生した第1及び第2の派生ファイルの間で常
に同じパターンで変更が行われている箇所を検出して、
その変更前後のパターンの対応情報を定型置換情報とし
て生成する第1の工程と、 前記元ファイルと前記第1の派生ファイルの間の差異を
調べて、対応する位置関係を示す第1の差分情報を生成
すると共に、前記元ファイルと前記第2の派生ファイル
の間の差異を調べて、対応する位置関係を示す第2の差
分情報を生成する第2の工程と、 前記第2の工程で生成された第1及び第2の差分情報か
ら、前記第1及び第2の派生ファイル間の差異に対応す
る位置関係を示す第3の差分情報を生成する第3の工程
と、 前記第3の工程で生成された第3の差分情報と、前記第
1及び第2の派生ファイルをもとに、前記第1及び第2
の派生ファイルのいずれか一方のファイルに、他方のフ
ァイルの変更部分を取り込む形でソースコードのマージ
を行い、バージョンアップされた出力ファイルを生成す
る第3の工程であって、前記第1の工程で生成された定
型置換情報の示す変更前パターンに一致するソースコー
ド部分をマージする際には、当該定型置換情報の示す変
更後パターンに置換する第3の工程とを具備することを
特徴とするソースコード自動バージョンアップ方法。 - 【請求項6】 ソースコードの元ファイルと当該元ファ
イルから派生した第1及び第2の派生ファイルが格納さ
れた記憶装置と、 前記記憶装置に格納されている前記元ファイルと前記第
1の派生ファイルの間の差異を調べて、対応する位置関
係を示す第1の差分情報を生成する一方、前記元ファイ
ルと前記第2の派生ファイルの間の差異を調べて、対応
する位置関係を示す第2の差分情報を生成し、この生成
した第1及び第2の差分情報から、前記第1及び第2の
派生ファイル間の差異に対応する位置関係を示す第3の
差分情報を生成する差分情報生成手段と、 前記差分情報生成手段により生成された第3の差分情報
と、前記第1及び第2の派生ファイルをもとに、前記第
1及び第2の派生ファイルのいずれか一方のファイル
に、他方のファイルの変更部分を取り込む形でソースコ
ードのマージを行い、バージョンアップされた出力ファ
イルを生成するマージ手段とを具備することを特徴とす
るソースコード自動バージョンアップ装置。 - 【請求項7】 前記差分情報生成手段は、前記第1及び
第2の派生ファイル間の差異を調べて、その差異に対応
する位置関係を示す第4の差分情報を生成するように構
成されており、 前記マージ手段は、前記差分情報生成手段で生成された
第4の差分情報を参照することでマージの妥当性を検証
するようにしたことを特徴とする請求項6記載のソース
コード自動バージョンアップ装置。 - 【請求項8】 前記マージ手段により生成された出力フ
ァイルと、前記元ファイル、前記第1の派生ファイル及
び前記第2の派生ファイルとを比較することで、前記出
力ファイルが正しくマージされているか否かを検証する
比較検証手段を更に具備することを特徴とする請求項6
記載のソースコード自動バージョンアップ装置。 - 【請求項9】 ソースコードの元ファイルと当該元ファ
イルから派生した第1及び第2の派生ファイルが格納さ
れた記憶装置と、 前記記憶装置に格納されている前記元ファイル、前記第
1の派生ファイル及び前記第2の派生ファイルを関数毎
に分解してファイル別の関数リストを生成する関数リス
ト生成手段と、 前記関数リスト生成手段により生成された前記元ファイ
ルと前記第1の派生ファイルの両関数リストの差異を調
べて、対応する位置関係を示す第1の差分情報を生成す
る一方、前記関数リスト生成手段により生成された前記
元ファイルと前記第2の派生ファイルの両関数リストの
差異を調べて、対応する位置関係を示す第2の差分情報
を生成し、この生成した第1及び第2の差分情報から、
前記第1及び第2の派生ファイルの両関数リスト間の差
異に対応する位置関係を示す第3の差分情報を生成する
差分情報生成手段と、 前記差分情報生成手段により生成された第3の差分情報
と、前記第1及び第2の派生ファイルをもとに、前記第
1及び第2の派生ファイルのいずれか一方のファイル
に、他方のファイルの変更部分を取り込む形でソースコ
ードのマージを行い、バージョンアップされた出力ファ
イルを生成するマージ手段とを具備することを特徴とす
るソースコード自動バージョンアップ装置。 - 【請求項10】 ソースコードの元ファイルと前記元フ
ァイルから派生した第1及び第2の派生ファイルが格納
された記憶装置と、 前記記憶装置に格納されている前記元ファイルと、当該
第1及び前記第2の派生ファイルの間で常に同じパター
ンで変更が行われている箇所を検出して、その変更前後
のパターンの対応情報を定型置換情報として生成する定
型置換情報生成手段と、 前記元ファイルと前記第1の派生ファイルの間の差異を
調べて、対応する位置関係を示す第1の差分情報を生成
する一方、前記元ファイルと前記第2の派生ファイルの
間の差異を調べて、対応する位置関係を示す第2の差分
情報を生成し、この生成した第1及び第2の差分情報か
ら、前記第1及び第2の派生ファイル間の差異に対応す
る位置関係を示す第3の差分情報を生成する差分情報生
成手段と、 前記差分情報生成手段により生成された第3の差分情報
と、前記第1及び第2の派生ファイルをもとに、前記第
1及び第2の派生ファイルのいずれか一方のファイル
に、他方のファイルの変更部分を取り込む形でソースコ
ードのマージを行い、バージョンアップされた出力ファ
イルを生成するマージ手段であって、前記定型置換情報
生成手段により生成された定型置換情報の示す変更前パ
ターンに一致するソースコード部分をマージする際に
は、当該定型置換情報の示す変更後パターンに置換する
マージ手段とを具備することを特徴とするソースコード
自動バージョンアップ装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7232742A JPH0981371A (ja) | 1995-09-11 | 1995-09-11 | ソースコード自動バージョンアップ方法及び装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7232742A JPH0981371A (ja) | 1995-09-11 | 1995-09-11 | ソースコード自動バージョンアップ方法及び装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0981371A true JPH0981371A (ja) | 1997-03-28 |
Family
ID=16944060
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7232742A Pending JPH0981371A (ja) | 1995-09-11 | 1995-09-11 | ソースコード自動バージョンアップ方法及び装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0981371A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008234379A (ja) * | 2007-03-22 | 2008-10-02 | Daikin Ind Ltd | ソフトウェア生成装置ならびにソフトウェア生成方法 |
| JP2010079905A (ja) * | 2008-09-25 | 2010-04-08 | Internatl Business Mach Corp <Ibm> | ソフトウェア成果物の第2バージョンに移行する際に、当該ソフトウェア成果物の第1バージョンになされたカスタマイズをマージするためのツールを生成する方法、コンピュータ使用可能な媒体及びデータ処理システム |
| US9830227B2 (en) | 2014-12-05 | 2017-11-28 | International Business Machines Corporation | Performing a closure merge operation |
| JP2019117481A (ja) * | 2017-12-27 | 2019-07-18 | 株式会社明電舎 | ファイル変更支援装置、ファイル変更支援方法及びファイル変更支援プログラム |
-
1995
- 1995-09-11 JP JP7232742A patent/JPH0981371A/ja active Pending
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008234379A (ja) * | 2007-03-22 | 2008-10-02 | Daikin Ind Ltd | ソフトウェア生成装置ならびにソフトウェア生成方法 |
| JP2010079905A (ja) * | 2008-09-25 | 2010-04-08 | Internatl Business Mach Corp <Ibm> | ソフトウェア成果物の第2バージョンに移行する際に、当該ソフトウェア成果物の第1バージョンになされたカスタマイズをマージするためのツールを生成する方法、コンピュータ使用可能な媒体及びデータ処理システム |
| US9830227B2 (en) | 2014-12-05 | 2017-11-28 | International Business Machines Corporation | Performing a closure merge operation |
| US10055302B2 (en) | 2014-12-05 | 2018-08-21 | International Business Machines Corporation | Performing a closure merge operation |
| US10877846B2 (en) | 2014-12-05 | 2020-12-29 | International Business Machines Corporation | Performing a closure merge operation |
| JP2019117481A (ja) * | 2017-12-27 | 2019-07-18 | 株式会社明電舎 | ファイル変更支援装置、ファイル変更支援方法及びファイル変更支援プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3248433B2 (ja) | プログラムリンケージ検証方式 | |
| EP0702294A2 (en) | Method and apparatus for diagnosing lexical errors | |
| US20090150420A1 (en) | Generating debug information | |
| JPH0981371A (ja) | ソースコード自動バージョンアップ方法及び装置 | |
| EP1164477A2 (en) | A loop optimization method and a compiler | |
| EP1202171A2 (en) | Compile method and program recording medium | |
| JP2004145381A (ja) | ソースプログラムの静的解析装置 | |
| JP2000357097A (ja) | プログラム管理方法 | |
| JP2007041804A (ja) | プログラム生成装置、プログラム検証装置および検証プログラム | |
| JPH1185536A (ja) | 原始プログラムのエラー自動修正装置及び方法 | |
| JP3584204B2 (ja) | 原始プログラム自動変換装置 | |
| JP4483163B2 (ja) | プログラムテストデバッグ装置 | |
| JPH01155438A (ja) | コンパイラ試験方式 | |
| JP2792383B2 (ja) | バッチ処理システムの処理結果の検証方法 | |
| JP2725628B2 (ja) | 再テストパス選択方式 | |
| JP5525459B2 (ja) | プログラム改造支援方法およびプログラム改造支援装置 | |
| JP3114199B2 (ja) | 言語処理システムのリスト出力方式 | |
| JP3729076B2 (ja) | 結合共有モジュールのバージョン検査方式およびバージョン検査プログラム | |
| JP2751539B2 (ja) | インタフェース検証処理方式 | |
| JPH08297569A (ja) | ソースプログラム修正支援装置 | |
| JP2806976B2 (ja) | プログラム内容検査装置 | |
| JPH08314758A (ja) | プログラムテスト進捗管理方法 | |
| JP2000112722A (ja) | 版数管理システム、管理方法及び記憶媒体 | |
| JPH05241802A (ja) | ソースモジュール修正情報のマージ方式 | |
| JPH096606A (ja) | リエンジニアリング検証方式 |