JPH11143755A - 階層構成情報のコピーおよび共有方法 - Google Patents

階層構成情報のコピーおよび共有方法

Info

Publication number
JPH11143755A
JPH11143755A JP10252496A JP25249698A JPH11143755A JP H11143755 A JPH11143755 A JP H11143755A JP 10252496 A JP10252496 A JP 10252496A JP 25249698 A JP25249698 A JP 25249698A JP H11143755 A JPH11143755 A JP H11143755A
Authority
JP
Japan
Prior art keywords
hierarchy
item
version
shared
items
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
Application number
JP10252496A
Other languages
English (en)
Inventor
Scott Kramer
スコット・クラマー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH11143755A publication Critical patent/JPH11143755A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】階層に構成された大量の情報を効率的に管理す
る。 【解決手段】最初に、階層がコードの複数のバージョン
によって共有されることが可能となるように新しいリン
クを階層のルートに加えることによってファイルおよび
ディレクトリ項目からなる1つの階層の仮想コピーを作
成する。次に、階層が既に非共有とされていない場合に
限り、階層をその親またはルートまでコピーすることに
よって、階層を非共有とする。階層の1つの項目の非共
有化と共に、非共有を反映するように項目の改訂版履歴
を更新する。階層が非共有とされた後、階層の諸項目は
修正可能であり、項目の各修正がその項目の改訂版履歴
に反映される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的には、階層
に構成された情報の管理に関するもので、特に、階層に
構成された情報の効率的共有およびコピーに関するもの
である。
【0002】
【従来の技術】ソフトウェアの開発において、ファイル
およびディレクトリの両者から成る単一の階層が、コー
ドの共通のベースラインからしばしば生じる複数の独立
した目的またはアプリケーションの使用に供されるよう
に一般に開発される。階層を使用する独立したアプリケ
ーションの各々は、階層のファイルまたはディレクトリ
の一部に対する変更または修正を必要とする場合があ
り、そのように必要とされる変更が、アプリケーション
毎に相違することが予想される。
【0003】当然のことながら、ある1つの所与のアプ
リケーションに関してファイルおよびディレクトリの階
層に対して行われる変更はオリジナルの階層とは独立し
ていると共に、他のアプリケーションに関する変更から
も独立していることが望ましい。しかしながら、各アプ
リケーションに関して行われるすべての変更を追跡する
ため各アプリケーション毎にファイルおよびディレクト
リの階層をコピーすることは、数十万あるいはおそらく
数百万のファイルおよびディレクトの複製を重複して作
成することにつながる可能性がある。多数のアプリケー
ション(またはリリース)または多数のファイルおよびデ
ィレクトリを有する階層を利用するシステムにおいて
は、変更される階層の各コピーが記憶されなければなら
ないので、そのような重複は記憶空間の浪費である。そ
の上、システムは、階層を共有する種々のアプリケーシ
ョンによって必要とされる変更に対応するため、ファイ
ルの階層がコピーされなければならない回数に比例した
時間的負荷を負うことになる。
【0004】複数の独立したアプリケーションに関して
開発されたファイルおよびディレクトリの階層を利用す
るシステムに必要とされるコピーのために必要な記憶空
間および時間を減少させるいくつかの試みが従来技術に
おいて開発されてきた。第1の手法は、アプリケーショ
ンによる修正が標示される度毎に階層全体のデータと全
く同じ複製を作成するものである。この手法は、大量の
記憶空間の使用、および、階層の複製の完了をシステム
のユーザが待つ長い時間をもたらす。
【0005】第2の手法は、階層のあらゆるファイルま
たはディレクトリに対するあらゆる修正に関する改訂版
すなわちリビジョン(revision)情報を維持するものであ
る。各ファイルおよびディレクトリがそれ自身の改訂版
履歴を持ち、ファイルまたはディレクトリの改訂版履歴
の特定の改訂版が、アプリケーションにとって適切な基
準に従ってそのアプリケーションに関して選択される。
従って、あるアプリケーションがその階層に新規または
追加の変更を行うことを必要とする時、選択された階層
バージョンが修正され、ファイルまたはディレクトリの
新しい改訂版が作成され、それがファイルまたはディレ
クトリの改訂版履歴の一部になる。この手法は、特定の
改訂版を一度だけ作成し、その後は、単に正しい改訂版
の選択を通してその改訂版を必要とするアプリケーショ
ンがそれを使用することができるという利点を提供す
る。新しいアプリケーションまたはバージョンが作成さ
れると必ず各ファイルまたはディレクトリにおいて開始
するベースラインを記録することが必要となる。新しい
アプリケーションまたはバージョンの初期化に関連する
時間が大きく、開始ポイントがマークされなければなら
ないので、オーバーヘッド負荷は大きい。従って、シス
テムのユーザは、大きい階層のファイルおよびディレク
トリによって悪化されるコピー時の顕著な待ち時間また
は遅延に遭遇する。
【0006】従来技術の第3の手法は、階層のファイル
またはディレクトリが修正されるべき時にのみ線形のco
py-on-write(コピーオンライト、書込時コピー)命令を
実行するものである。この手法は、一般にオペレーティ
ング・システムのカーネルにおいて使用され、システム
の複数のプロセスまたはアプリケーションによって変更
されないまま維持されると予想される大きなメモリ・ア
レイを共有する。メモリ・アレイのデータを管理するた
めに必要とされる制御構造は共有されず従って各プロセ
ス毎に複製されなければならない。そのため、線形copy
-on-write手法を使用するシステム・ユーザは待ち時間
の増加を感じる。しかしながら、制御構造の制御情報の
量が管理されているデータ量に比較して非常に少ない場
合には、この手法は適している。例えば、メモリ・アレ
イのメモリの各ページのための基準カウンタ整数が、制
御構造が管理されるべき多量のデータに比較して非常に
小さいことを示す。
【0007】従来技術の線形copy-on-write手法は、多
数のファイルおよびディレクトリを持つ大きい階層に関
する効率を犠牲にする。複数の独立したアプリケーショ
ンによって使用される大きい階層から作成されると予想
される多数のコピーは、結局、効率的コピー時間を与え
るため制御構造それ自体がアプリケーションの間で共有
されることを必要とする。現状では制御構造は共有され
てなく、従って、線形copy-on-write手法は、多数のフ
ァイルおよびディレクトリを含む階層を持つシステムに
おいて使用される場合、効率的時間を提供しない。
【0008】
【発明が解決しようとする課題】上記記述から、階層に
構成された大量の情報を効率的にコピーし共有すること
ができる未解決の必要性が当業界に存在することは明ら
かである。
【0009】階層に構成された大量の情報を効率的にコ
ピーし共有する必要性に加えて、仮想的にコピーされ、
階層的に構成された情報を比較することができる必要性
が存在する。そのような比較を実行する1つの明確な方
法は、比較されている階層のファイルまたはディレクト
リ項目のすべてを各々比較することである。この手法の
問題は、比較される階層の間で等しい可能性のある下位
階層が認識されないので、実際には同じものである階層
間の項目を比較する際に大きな重複作業が実行されるこ
とである。単純比較命令にともなう更なる困難は、階層
の項目間で相違する情報だけが把握され、相違の方向ま
たはソースが把握されない点である。例えば、第1の階
層における作成と第2の階層における削除の間を区別す
るために利用できる変更履歴が存在しない。同様に、項
目名が変更された場合比較されている2つ以上の階層の
どの階層で名前変更が起きたのか判断することができな
い。
【0010】このように、比較されるべきファイルまた
はディレクトリの2つ以上の階層間で効率的比較演算を
実行することができる未解決の必要性が当業界に存在す
る。そのような効率的な比較演算を実行することができ
るだけではなく、階層間の相違のソースを確認すること
ができる未解決の必要性もまた当業界に存在する。
【0011】更にソフトウェア開発の別の局面におい
て、一定期間ある機能を他の機能と独立させて開発し、
変更が正しく動作することがわかれば新機能をソフトウ
ェアの他の機能とマージさせることが望ましい場合がし
ばしばある。大きい階層のファイルおよびディレクトリ
においては、そのような改良にともなう相違およびマー
ジが極めて大量となり、そのため、相違をマージする作
業は退屈であり人間のエラーを誘発しがちである。しか
しながら、大部分のマージが予測可能なデフォルトを持
つことは大きい階層の特性である。
【0012】マージがソフトウェアに関して実行される
共通の作業であるが、マージの範囲は、典型的には、異
なる変更を持つファイルの内容をマージすることを含む
だけである。ファイルの属性はマージされないし、プロ
グラムの1つの論理的な分岐から他の分岐への変更コピ
ーを取り扱う体系的方法は提供されてない。階層項目の
属性には、項目の内容、項目の名前、項目の親ディレク
トリ、項目のモード、項目に関連する入出力タイプ、項
目に関するキーワード拡張タイプ、項目に関するユーザ
設計の属性ストリング、項目に関する作成または削除の
状態、項目がファイルであるかディレクトリであるかの
識別などが含まれる。更に、マージは典型的には1時点
で1つの項目について実行されるので、特に大規模の階
層のファイルおよびディレクトリについては非常に時間
のかかるプロセスである。
【0013】かくして、少なくとも2つの階層のファイ
ルおよびディレクトリの間で内容のみならず属性相違を
マージするマージ演算を実行することができる未解決の
必要性が当業界に存在する。
【0014】
【課題を解決するための手段】本発明の目的の1つは、
階層に構成された大量の情報を効率的にコピーすること
を可能にすることである。
【0015】本発明の別の目的は、仮想的にコピーさ
れ、階層的に構成された情報を比較することを可能にす
ることである。
【0016】本発明の更に別の目的は、比較されるべき
ファイルまたはディレクトリの2つ以上の階層間で効率
的比較演算を実行することを可能にすることである。ま
た、そのような効率的な比較演算を実行することができ
るだけではなく、階層間の相違のソースを確認すること
ができる未解決の必要性が当業界に存在する。
【0017】本発明の更にまた別の目的は、少なくとも
2つの階層のファイルおよびディレクトリの間で内容の
みならず属性相違をマージするマージ演算を実行するこ
とを可能にすることである。
【0018】本発明の第1の局面に従って、階層がコー
ドの1つまたは複数のバージョンによって共有されるこ
とが可能となるように新しいリンクを階層のルートに加
えることによってファイルおよびディレクトリ項目から
なる1つの階層の仮想コピーを先ず作成する方法によっ
て、階層的に構成された大量の情報の効率的コピーおよ
び共有手段が提供される。次に、階層が既に非共有とさ
れていない場合に限り、階層をその親またはルートまで
コピーすることによって、階層は非共有とされる。階層
の1つの項目の非共有化と共に、非共有を反映するよう
に項目の改訂版履歴が更新される。階層が非共有とされ
た後、階層の諸項目は修正可能であり、項目の各修正は
その項目の改訂版履歴に反映される。
【0019】本発明の第2の局面に従って、ファイルお
よびディレクトリの項目の少なくとも2つの階層の効率
的比較方法が提供される。この方法において、最初のス
テップは、相違リストの初期化であって、比較されるべ
き2つの階層のルート・ディレクトリを相違リストに追
加する。共有される階層の項目が(共有は各項目の識別
子によって識別される)、相違リストの単一エントリに
マージされる。同じデータベース・アドレスを持つ項目
を表す複数の単一エントリの相違リストからの削除が次
に実行され、後に再帰演算される相違リストの項目数が
減少される。最後に、比較されている階層の項目の間の
すべての相違を含むように相違リストの項目が再帰的に
拡張される。
【0020】本発明の第3の局面に従って、階層の適切
な項目を再共有することによって項目の階層の効率を維
持する方法が提供される。最初に、第1の階層の1つま
たは複数の項目または第1の階層の一部分が、第2の階
層の別の項目または第2の階層の一部分と同一の識別子
を有するか否かが判断される。項目のペアが比較され同
一であるか調べられる。そのペア項目が同一であれば、
それら項目は再共有化され、同じデータベース・アドレ
スを持つものとして特徴づけられる。
【0021】本発明の第4の局面に従って、階層のソー
ス・バージョンにおいてなされる変更を用いて階層の目
標バージョンを自動的に更新する方法が提供される。階
層の1つまたは複数の項目の間でなんらかの相違が存在
するか否かを判断するため、階層の目標バージョンおよ
びソース・バージョンが比較される。相違を識別すれ
ば、各相違に関して共通の先祖改訂版を識別することが
可能である。人間の介入を必要としないデォルト・アク
ションが実行される。特定の変更に関する共通の先祖改
訂版の識別によって適切なデフォルト・アクションが定
義される。
【0022】
【発明の実施の形態】ソフトウェア構成管理において、
ソフトウェアのバージョンが開発され、リリースされ
る。しかし、バージョンのリリースと共に開発は中止さ
れない。バージョンがリリースされた後、典型的には、
変更または「パッチ」がそのバージョンに対して継続し
て作成される。これを実行するため、本発明の方法は、
リリースされたバージョンの階層を作成する。変更およ
び通常改良されたソフトウェアの第2のバージョンをリ
リースするために第1のバージョンに対して行われる変
更のすべてが第1のバージョンと分離されるように階層
がコピーされる。加えて、ソフトウェア・コードの階層
からコピーを作成することによって、コードの変更の1
セットを他の変更セットから分離することが可能とな
る。ソフトウェア・コードの階層の種々のコピーは、ソ
フトウェア・コードの展開に沿って種々のチェックポイ
ントを表す。ソフトウェアの種々のバージョンがソフト
ウェア・コードの同一部分を使用する場合には、コード
のその部分の重複は、種々のバージョンによるコードの
共通の部分の共有化によって回避されなければならな
い。かくして、本発明は、いかなる数のファイルおよび
ディレクトリに関してもソフトウェアの種々のバージョ
ンの効率的管理を提供する。
【0023】ソフトウェアの種々のバージョンに加え
て、本発明はソフトウェアの平行開発にとって有用であ
る。ソフトウェア開発においては、ソフトウェア・コー
ドの2つまたはそれ以上の関連バージョンが時間的に逐
次というよりむしろ同時に開発される方が一般的であ
る。例えば、2つのプログラムは、同じコードを多く使
用するが、異なるハードウェアまたはアプリケーション
での使用に対して設計されることがある。このような例
においては、コードの非効率な重複を減少させるため2
つのプログラムの両者が使用するコード部分を共有する
ことは利益があろう。
【0024】階層に構成された大量の情報の効率的なコ
ピーおよび共有 本発明の方法は、独立したアプリケーションまたは改訂
版の各々にファイルの階層の仮想コピーを用意し、ファ
イルの階層が修正される時にのみその実際の、独立した
コピーを作成する。本発明の共有方法が適切に機能する
ようにするため、子の各々に対して1つの親として定義
されるようなファイルの厳格な階層の出現を各アプリケ
ーション毎に維持しなければならないが、本発明は、実
際には、少なくとも2つのアプリケーションによって共
有されるファイルの共有された階層の各々に対して複数
の親を用意する。
【0025】図1を参照すれば、複数の親および複数の
子を持つ共有されたディレクトリが示されている。共有
ディレクトリに新しい親リンクを加えることによって、
複数のアプリケーションによるファイルの階層全体と共
にディレクトリの共有された使用が示される。このよう
に、ファイルの階層の新しい仮想コピーは、新しい親リ
ンクを共有されたディレクトリ階層のルートに単に追加
することによって作成される。
【0026】図1の部分図Aは、複数の親および複数の
子を持つ共有ディレクトリ16を示している。親の名前
12a、12b、12cは、各々がファイルの同じ階層
を共有する3つの仮想コピーを表し、従って、すべての
親の名前12a、12b、12cは同じ共有ディレクト
リ16をポイントする。子の名前18a、18b、18
cは、すべてが共有ディレクトリ16に根ざす3つの子
ファイルまたはディレクトリ20a、20b、20cを
表す。改訂版履歴14は、共有ディレクトリ16それ自
体に対して行われる変更の履歴に関する情報を含む。階
層の各項目は、その階層のファイルおよびディレクトリ
を含み、それに関連した、改訂版履歴14と同様の改訂
版履歴を有する。子20a、20b、20cの各々は、
図1に示されてはいないが、共有ディレクトリ16の改
訂版履歴14と同様の改訂版履歴を有する。
【0027】階層の中の各項目は、改訂版履歴によって
表される(その項目への)変更の履歴を有し、その履歴は
その項目のすべてのインスタンスによって共有される。
例えば、項目"/a/b"は、"/a/b"というその他のあらゆる
事象によって共有される履歴を持つ。"/a/b"のような項
目が変更されると、その変更はその項目に関する改訂版
履歴の一部になる。改訂版履歴の中にもう1つのレコー
ドが作成される。このような意味において、改訂版履歴
は、ソフトウェア・コードに対して行われるいかなる変
更をも追跡するレコードの集合である。改訂版履歴をチ
ェックすることによって項目がどのように、何によっ
て、いつ変更されたかを確認するすることが可能であ
る。このように、ソフトウェアの第1のリリースされた
バージョンに対するパッチをソフトウェアの第2のリリ
ーズされたバージョンに対するものと比較するには、改
訂版履歴にアクセスすることが必要である。
【0028】図2は、ある1つの項目の改訂版履歴の例
30を示している。図2の改訂版履歴30は、1つの項
目の改訂版履歴の1つの例にすぎないという点に留意さ
れるべきである。項目のバージョンAは項目の改訂版1
を参照している。項目の改訂版2は、階層のバージョン
Fによって参照されていて、改訂版1から導出される。
項目の改訂版3は、項目の改訂版2に対する変更があり
次第作成される。項目の改訂版4は、改訂版1から導出
され、階層のバージョンCの範囲内で参照される。項目
の改訂版5は、階層のバージョンDの範囲内で参照さ
れ、改訂版3を改訂版4にマージして作成される。改訂
版6は、項目の改訂版2から導出され、該項目がバージ
ョンBから削除されたことを標示する。最後に、改訂版
7は該項目がバージョンEから削除されたことを標示す
る。前述のように、項目は階層のファイルおよびディレ
クトリに付随するものである。
【0029】少なくとも2つのアプリケーションによっ
て共有されるファイルの階層の部分を修正するために
は、ファイルの階層のその部分をコピーまたは非共有化
することが先ず必要である。この意味において、本発明
に従う修正は、copy-on-write演算とみなすこともでき
る。図1の部分図Bを参照すれば、修正されるべきファ
イルの階層の部分を非共有化するための効率的なメカニ
ズムが示されている。図1の部分図Aおよび部分図B
は、ファイルの階層の1つの共有ディレクトリの非共有
演算を示す。ディレクトリが非共有化またはコピーされ
る前に、先ず、共有ディレクトリの親ディレクトリが、
ルートまでさかのぼるそれ自身の親と共に、非共有化さ
れなければならない。共有ディレクトリは修正を行うこ
とができるように非共有化されなければならないが、共
有ディレクトリの下位階層は引き続き共有される。
【0030】図1の部分図Bを見れば、親の名前12a
はもはや共有ディレクトリをポイントしていない。代わ
って、親12aは非共有ディレクトリ22をポイント
し、修正されることができない共有コピーではなく、修
正されることができるファイルの階層の実際のコピーを
表している。親の名前12bおよび12cは、共有ディ
レクトリ16を依然としてポイントしていて、ファイル
の階層の仮想コピーを表している。子の名前18a、1
8b、18cは、すべて共有ディレクトリ16に根ざす
子のファイル20a、20b、20cを表す。子の名前
24a、24b、24cは、すべて非共有ディレクトリ
22に根ざす子のファイル20a、20b、20cを表
す。図1の共有および非共有動作を通して、1つの項目
に対して行われるた変更の履歴を記述するため1つの改
訂版履歴が使用される点に留意する必要がある。例え
ば、共有ディレクトリ16および非共有ディレクトリ2
2は、1つの項目について、共有あるいは非共有いずれ
かの異なる状態を表し、従って、改訂版履歴14はその
項目の両方の状態と関連づけられる。
【0031】上記概念を具体的に記述するため、ファイ
ルの階層の項目"/a/b"を修正する動作を考察する。まず
必要なことは、その項目の親すなわちファイルの階層の
ルート"/"が非共有化されることである。次に、新しく
非共有化されたルート・ディレクトリの中の"a"が非共
有化され、新しく非共有化されたルート・ディレクトリ
aの中の"b"が非共有化される。これら3つの非共有化
演算は、新しく非共有化される項目bが修正されること
ができる前に、完了されなければならない。
【0032】次に、項目"/a/b2"が修正されるべきもの
であると仮定する。項目"/a/b"が修正されて以来その項
目が存在する階層の仮想コピーが作成されなかったとす
れば、ルート・ディレクトリおよびディレクトリ"a"は
すでに非共有化されているので、/a/b2が修正される前
に、項目"b2"だけを非共有化すればよい。従って、"/a/
b2"を修正するため、3回の非共有化演算ではなくただ
1回の非共有化演算が実行されるだけでよい。
【0033】この例は、本発明の重要な利点を例示して
いる。すなわち、仮想コピーが発生しなかった限り、修
正されるべきファイルの階層の部分における既に非共有
化された項目は、それ以降の修正を実行するため再度非
共有化される必要はない。従って、本発明は、ファイル
の階層のそのような部分を修正するために必要となる時
間量を減少させる。一般的には、修正演算の各々に必要
とされる非共有化演算の数は、修正されるべき項目の数
にほぼ等しいので、それ以降の修正のため必要とされる
増分時間は、従来技術の線形copy-on-write演算の増分
時間に接近する。
【0034】しかしながら、本発明は、従来技術手法の
ユーザによって認識される時間を大幅に減少させる。フ
ァイルの階層のルートに対する新しい親リンクを単に作
成することによって、ファイルの階層の仮想コピーが作
成される。ファイルの実際の階層のコピーはそれが修正
されるまで遅延され、要求される修正に関係したファイ
ルの階層のその部分だけが非共有化される。階層が修正
されるべき時までコピーを延期し、修正のため必要な階
層部分だけを非共有化するという方法が、システムのユ
ーザによって認識される処理時間を大幅に減少させる。
【0035】仮想的にコピーされ階層に構成された情報
の効率的な比較 ソフトウェア開発において、ファイルおよびディレクト
リの階層に対する変更は一般的に明確に維持される必要
があるが、一定の時間の後、オリジナルの階層またはそ
の他のベースライン階層から何が変わったかを知ること
が望ましいことがしばしばある。この必要性に対応する
ため、本発明は、ベースライン階層に対する変更された
階層の効率的な比較を提供する。2つの項目が同じデー
タベース・アドレスを参照すれば、それらは共有されて
いる。比較される2つの階層の間で何が共有され何が共
有されていないかを知ることは可能であるので、2つの
階層の比較は、共有されてない階層の部分だけを対象と
する。階層の共有された部分は定義によって等しいソフ
トウェアであるので、階層の共有された部分の比較が不
要であり従って無用である。
【0036】また、改訂版履歴14の範囲内に含まれる
情報によって、比較される階層の項目の間の相違を決定
するだけでなくそのような相違のソースをも知ることが
可能である。改訂版履歴14の範囲内で実行された変更
の履歴は、変更を識別するだけでなく、そのような変更
が階層のどのバージョンで行われたかという識別を提供
する。例えば、当該項目に関する改訂版履歴を調べるこ
とによって、1つの階層における作成演算と別の階層に
おける削除演算を区別することが可能である。また、比
較されているどちらの階層において名前変更演算が実行
されたかは、それが改訂版履歴14に同様に反映される
ので、明らかにすることが可能である。
【0037】本発明の効率的な比較演算は、比較されて
いる階層の仮想コピーおよび共有演算、すべてのコピー
にわたる項目識別を維持するユニークな項目識別子およ
び改訂版履歴14の内部に保持される変更レコードに基
づく。比較演算は、比較されている階層両者のルート・
ディレクトリの階層間相違リストへの書き込みまたは追
加の命令、この相違リストに項目をマージし、共有下位
階層を表す項目を削除する命令、および、相違リストに
残存する項目に上記演算を再帰的に実行する命令を含
む。比較演算において再帰演算を最小にすることが望ま
しい。2つ以上の階層における項目間の相違は、階層が
表す実際のデータではなく階層を調べることによって判
断される。
【0038】比較の第1のステップは、比較されている
階層の各々のルート・ディレクトリを相違リストへ書き
込みまたは追加することによって相違リストを初期化す
ることである。比較されている階層のルート・ディレク
トリの書き込みの後の次のステップはマージおよび削除
演算である。
【0039】ファイルおよびディレクトリの階層の各項
目は、データベース・アドレスだけでなくそれに関連す
るユニークな識別子を有する。少なくとも2つの階層の
中に存在している論理上等しい項目は、それらに関連し
た同じユニークな識別子を持つ。比較されている階層か
ら書き込まれたそのような項目は、相違リストにおいて
単一エントリに結合される。結合されたエントリにおけ
る複数項目が同一のデータベース・アドレスを持てば、
それらは共有され、同一であることが認められているの
で、そのエントリは相違リストから削除される。結合さ
れたエントリにおける複数項目が共有されない場合、そ
のエントリは再帰演算のためマークされる。
【0040】比較演算の最終ステップは、上述の書き込
みおよびマージによって作成された相違リストを再帰的
に拡張することである。相違リスト上の非共有項目の各
々ごとに、項目と関連する下位項目が読み取られそして
相違リストに追加され、階層の各項目に対する上述のマ
ージ、削除および再帰ステップが、階層内に保有される
すべての相違が相違リストに記述されるまで、反復され
る。下位項目の意味を例示するため、非共有項目として
の"/a"を考察する。"/a"を親ディレクトリとして持つす
べての項目は、"/a"の下位項目とみなされる。例え
ば、"/a/b"および"/a/c"はともに"/a"の下位項目であ
る。
【0041】拡張的再帰の目標は、2つの階層によって
共有されている項目に対する再帰演算を行うことなく階
層におけるすべての相違を見つけ出すことである。比較
演算の効率の鍵は、階層の間で共有されている項目に対
する再帰を回避することである。両方の階層からの1つ
の項目が相違リストの単一エントリに書き込まれ、結合
されたならば、それは、共有されているので、リストか
ら削除されるか、再帰演算を受ける準備ができている
か、いずれかである。再帰が適当であることが既知であ
るので、それ以上余分なチェックはこの状況において必
要でない。このように、相違リストにおける結合された
エントリが最初に再帰される。これにより、ほとんどの
項目は、後述の余分なチェックを行わず結合されたエン
トリにおいてペアを組むことができるので、効率が向上
する。
【0042】すべての結合されたエントリが再帰演算さ
れると、ただ1つの階層だけの項目を含むエントリが再
帰演算される。単一項目に関するエントリを項目が両方
の階層に存在するものとただ1つの階層に存在するもの
とを区別するため、当該項目に関する改訂版履歴および
おそらく当該項目がまだ書き込まれていない階層におけ
る更なるチェックが実行されなければならない。
【0043】項目に関する改訂版履歴はその項目が他の
階層で削除されているか否かを標示する。もし削除され
ていれば、これは相違目的のため記録され、エントリは
再帰演算される。
【0044】そうでなければ、項目はそのユニークな識
別子によって他の階層において調べられる。もし存在し
なければ、エントリは再帰演算される。存在すれば、そ
の項目の再帰演算は、可能であれば、通常の書き込みが
行われるまで遅延される。そのような遅延が可能でない
場合、エントリは、結合されたエントリになる前に、再
帰演算され、結合が発生した後再帰を完了することがで
きる。
【0045】本発明の比較演算の利点は、比較時間が、
階層自体のサイズによってではなく、比較されている階
層の間の相違の数によって決定される点である。比較さ
れている階層の共有下位階層は共有と識別され、比較演
算は実行されない。別の利点は、比較演算が、比較され
ている階層の間の相違を識別するだけではなく、1つの
階層における作成演算と別の階層における削除演算を区
別する能力を含むその他の価値ある情報を提供する点で
ある。そのような情報は、目標階層に対してなされた変
更を元に戻すことを必要とせずに、1つの階層において
行われた変更を別の目標階層にマージさせることを可能
にする。
【0046】仮想的にコピーされ階層に構成された情報
の効率の維持 本発明の更なる局面は、少なくとも2つのアプリケーシ
ョンまたは改訂版によって使用される階層の部分を再共
有する機能である。仮想的にコピーされ、階層に構成さ
れた情報の効率を維持するため再共有演算が必要であ
る。上述のコピーに引き続いてソフトウェア・コードへ
の変更が行われると、ファイルの階層のコピーは時間の
経過と共に共有の度合が少なくなり、このため、上述の
比較は時間と共に効率が悪くなる。しかしながら、本発
明は、マージ演算が階層の項目を等しくさせた後それら
階層の項目を再共有させ、それによって効率を維持す
る。
【0047】本発明の方法は、マージ演算の結果等しく
なる非共有階層部分を再度共有化する再共有演算を含
む。改訂版履歴14を使用して、階層のどの部分が等し
いかが迅速にかつ効率的に判断される。階層部分の再共
有化は、図1の部分図Aおよび部分図Bによって示され
る。図1の部分図Bから部分図Aへの方向によって示さ
れる再共有化演算において、非共有ディレクトリ22に
関連する余分な親の名前12aが削除される。図1の部
分図Aに示されるように、すべての親の名前12a、1
2b、12cは、再共有化の後、共有ディレクトリと関
連づけられる。再共有化演算は、典型的には、ソフトウ
ェア・コードに対するマージ演算とともに自動的に実行
される。
【0048】改訂版制御項目の階層における変更の自動
的適用 ソフトウェア開発のもう1つ別の局面において、新しい
機能を一定期間他の機能と独立して開発し、その後それ
が許容可能な変更と認められれば新しい機能をソフトウ
ェアの他の機能とマージさせることが望ましいことが多
い。大きい階層のファイルおよびディレクトリにおい
て、そのような改良に関連する相違およびマージの数は
極めて多数となり、従って、相違をマージする作業は極
めて退屈で人間のエラーを誘発しがちである。しかしな
がら、大部分のマージが予測可能なデフォルトを持つこ
とは大きい階層の特性である。従って、本発明は、少な
くとも2つの階層の間のコンテントおよび属性の相違を
安全に自動的にマージするために必要な情報を保存し後
刻処理する手段を提供する。階層の項目のコンテントお
よび属性における変更を自動的に適用することは、一層
重要なタスクのためユーザを解放し、人間のエラーの発
生を減少する。
【0049】前述のように、マージは共通のソフトウェ
ア・タスクであるが、従来技術における典型的マージの
範囲は、異なる変更を持つファイルのコンテントをマー
ジすることを含むだけである。従来技術においては、フ
ァイルの属性はマージされないし、プログラムの1つの
論理的な分岐から他の分岐への変更のコピーを取り扱う
体系的方法は提供されない。階層項目の属性には、項目
の内容、項目の名前、項目の親ディレクトリ、項目のモ
ード、項目に関連する入出力タイプ、項目に関するキー
ワード拡張タイプ、項目に関するユーザ設計の属性スト
リング、項目に関する作成または削除の状態、項目がフ
ァイルであるかディレクトリであるかの識別などが含ま
れる。更に、マージは典型的には1時点で1つの項目に
ついて実行されるので、特に大規模の階層のファイルお
よびディレクトリについては非常に時間のかかるプロセ
スである。
【0050】本発明において、階層の間の相違の大部分
のマージはユーザの介入なしに自動的に実行されること
ができる。これを達成するため、比較およびマージ演算
は、階層のバージョンの間で実行される。バージョン
は、ファイル改訂版の完全な階層として定義される。項
目のすべての属性に対するあらゆる変更がその項目と関
連した改訂版履歴14に記録される。変更記録は改訂版
として知られ、あらゆる改訂版は以下の情報を記録す
る。すなわち、どの改訂版から変更が導出されるか、変
更が作成される対象のバージョン、前の改訂版以後どの
属性が変更したかを標示するフラグ、および、項目の改
訂版履歴におけるユニークな改訂版番号という情報であ
る。更に、本発明の方法は、ある1つ階層における作成
と別の階層における削除を区別する。1つの項目がある
バージョンから削除される時、その項目に関する改訂版
履歴は、その項目のあらゆる属性が変更したことを標示
する。しかしながら、ある項目が1つのバージョンにお
いて作成されるかまたは削除から復活させられる時、そ
の項目に関する改訂版履歴は変更を示さない。ある項目
が階層のいくつかのバージョン中に存在するとすれば、
その項目の改訂版履歴における独立した削除レコード
が、実行された各削除演算毎に作成される。従って、項
目が2つのバージョンから削除されるならば、2つの削
除レコードがその項目の改訂版履歴に存在する。この削
除レコードによって、項目の作成ではなく削除を伝播し
ていることが認められる。
【0051】上記の概念は、ソース・バージョンおよび
目標バージョンを用いて例示することができるであろ
う。目標バージョンは、目標バージョンにまだ適用され
ていないソース・バージョンにおける変更を含むように
更新される。ソース・バージョンおよび目標バージョン
の比較に従って所与の項目における相違が指摘される
時、ソース・バージョンまたは目標バージョンによって
参照される項目の共通の先祖または改訂版が見つけられ
る。
【0052】種々のデフォルト・アクションを項目の共
通の先祖の識別によって定義することが可能である。ソ
ース・バージョンが目標バージョンにマージされる場
合、下記のマージ・テーブルに示されるように、デフォ
ルト・アクションは3つの可能な共通の先祖シナリオに
従って定義されることができる。第1に、項目の共通の
先祖がソース・バージョンによって参照される改訂版で
あれば、これは、変更が目標バージョンだけに対して行
われたことを標示する。再度図2を参照すれば、このシ
ナリオ・タイプの例は、バージョンAがソース・バージ
ョンであり、バージョンCまたはバージョンDのいずれ
かが目標バージョンである場合である。この場合、目標
バージョンに既に存在しないソース・バージョンにおけ
る変更はないので、デフォルト・アクションは何もしな
いことである。下記マージ・テーブルに示されるよう
に、目標バージョンへの変更が、作成、削除あるいは変
更のいずれであるかに関係なく、デフォルト・アクショ
ンは何もしないことである。目標バージョンにおける種
々の変更に対する代替アクションがマージ・テーブルに
示されている。目標バージョン変更が作成であれば、代
替マージ・アクションは削除または破棄を実行すること
である。目標バージョン変更が削除であれば、代替マー
ジ・アクションは、存在または削除アンドゥ演算であ
る。目標バージョン変更が属性変更であれば、代替マー
ジ・アクションは、存在または反転演算である。デフォ
ルト・マージ・アクションとは相違して、代替マージ・
アクションを達成するためなんらかのユーザの介入が必
要とされる。
【0053】第2に、項目の共通の先祖が目標バージョ
ンによって参照される改訂版であれば、これは、変更が
ソース・バージョンに対してのみ行われたことを標示す
る。図2を参照すれば、このシナリオは、目標バージョ
ンAおよびソース・バージョンFによって表され、この
場合変更はソース・バージョンFに対してのみ行われて
いる。このケースでは、デフォルト・アクションは、目
標バージョンを正確にソース・バージョンのようにする
ことであり、それによって、すべてのソース・バージョ
ンの変更が目標バージョンに組み入れられる。言い換え
ると、デフォルト・アクションは、ソース・バージョン
Fが参照しているもの例えば改訂版2を目標バージョン
Aが参照するようにさせ、目標バージョンAのすべての
属性をソース・バージョンFの属性に合致させることで
ある。目標バージョンの変更は影響を受けない。
【0054】下記マージ・テーブルに示されるように、
デフォルト・アクションはソース・バージョンの変更を
反映する。ソース・バージョン変更が作成であれば、デ
フォルト・アクションは作成であり、ソース・バージョ
ン変更が削除であれば、デフォルト・アクションは削除
である。ソース・バージョン変更が変更であれば、デフ
ォルト・アクションは変更である。ソース・バージョン
における種々の変更に関する代替アクションが下記マー
ジ・テーブルに示されている。ソース・バージョン変更
が作成であり目標バージョンが存在しないなら、代替マ
ージ・アクションは、削除または拒絶演算を実行するこ
とである。ソース・バージョン変更が削除であり目標バ
ージョンが存在すれば、代替マージ・アクションは、存
在または拒絶演算である。ソース・バージョン変更が変
更であり目標バージョンが存在すれば、代替マージ・ア
クションは、存在または拒絶演算である。デフォルト・
マージ・アクションとは相違して、代替マージ・アクシ
ョンを達成するためなんらかのユーザの介入が必要とさ
れる。
【0055】第3に、項目の共通の先祖がソース・バー
ジョンまたは目標バージョンのいずれかによって参照さ
れてない改訂版であれば、これはソースおよび目標バー
ジョン両者に対して変更が行われたことを標示する。例
えば、図2において、ソース・バージョンCおよび目標
バージョンFに対して変更が行われている。
【0056】項目の共通の先祖がソース・バージョンま
たは目標バージョンのいずれかによって参照されてない
改訂版である第3のタイプに対応する可能なデフォルト
・アクションは3つある。これらの3つのタイプのデフ
ォルト・アクションは下記マージ・テーブルに明示され
ている。第1のデフォルト・アクションは、ソースおよ
び目標バージョンの共通の要素をもたない属性が影響を
受け、従って、ソースおよび目標バージョンの間に相互
に矛盾しない変更が存在するような状況に関するもので
ある。そのような状況は、例えば、変更が、ソース・バ
ージョンの項目のモードおよび目標バージョンの項目の
名前に対して行われたような場合に発生する可能性があ
る。この例における変更は、明らかに、ソースおよび目
標バージョンにおける項目のモードおよび名前属性とい
う相互に関係のない属性に対するものである。このケー
スでは、目標バージョンに対して行われた変更を一切失
うことなくソース・バージョンの変更が目標バージョン
にコピーされる。このデフォルト・アクションは、変更
がソース・バージョンに対して発生し、属性の異なるセ
ットへの変更が目標バージョンに対して発生した場合に
対するものとして、下記マージ・テーブルに示されてい
る。このデフォルト・アクションは、目標バージョンに
対してすでに行われた変更を失うことなくソース・バー
ジョンの変更演算を目標バージョンにコピーすることに
よってソースおよび目標バージョンの変更を結合するこ
とである。このケースにおける1つの代替アクション
は、ユーザによるなんらかの別のアクションである。
【0057】第2の代替アクションが取られるのは、ソ
ースおよび目標バージョンにおいて変更されたある限ら
れた値の属性に関して矛盾があるケースにおいてであ
る。限られた値の属性の例には、項目のモード、項目の
入出力モード、項目のキーワード拡張タイプおよび項目
の作成または削除の状態が含まれる。このケースでは、
ソースおよび目標バージョンの間の変更が控えめである
方が望ましい。例えば、項目がソース・バージョンから
削除され目標バージョンにおいて変更された場合、デフ
ォルト・アクションは目標バージョンにおける変更であ
る。このデフォルト・アクションは、ユーザの介入なし
に実行される。このデフォルト・アクションは、下記マ
ージ・テーブルにおいて2つの例について示されてい
る。第1に、削除がソース・バージョンで発生し、変更
が目標バージョンで発生するシナリオにおいて、デフォ
ルト・マージ・アクションは目標バージョンの変更を維
持することである。このシナリオにおける代替アクショ
ンは、ある種のユーザ介入を必要とし、ソース・バージ
ョンの削除を維持することである。第2に、変更がソー
ス・バージョンで発生し、削除が目標バージョンで発生
するシナリオにおいて、デフォルト・マージ・アクショ
ンはソース・バージョンの変更を維持することである。
このシナリオにおける代替アクションは、ある種のユー
ザ介入を必要とし、目標バージョンの削除を維持するこ
とである。
【0058】第3のアクションが取られるのは、項目コ
ンテント、項目名および項目の親の名のような値の範囲
に制限のない項目属性において矛盾が発生するケースに
おいてである。この状況において、そのような矛盾を整
理するためユーザの介入が必要とされる。このように、
デフォルト・アクションは存在しないが、目標およびソ
ース・バージョンの間で内容をマージするような場合に
は、ユーザに代わって自動的に処理が進められる場合も
ある。ソースおよび目標バージョンに対して異なる変更
が行われた場合のデフォルト・アクションとしてのマー
ジが下記マージ・テーブルに示されている。このケース
における代替アクションは、ある種のユーザ介入を必要
とし、ソース・バージョンまたは目標バージョンのいず
れかの変更を選択することである。
【0059】
【表1】 マージ・テーブル目標のみ変更の場合 デフォルト 代替 ソース状態 目標状態 アクション アクション 存在しない 作成 何もせず 削除(破棄) 存在 削除 何もせず 存在(削除アンドゥ) 存在 変更 何もせず 存在(反転)ソースのみ変更の場合 デフォルト 代替 ソース状態 目標状態 アクション アクション 作成 存在せず 作成 削除(拒絶) 削除 存在 削除 存在(拒絶) 変更 存在 変更 存在(拒絶)ソースおよび目標の両方変更の場合 デフォルト 代替 ソース状態 目標状態 アクション アクション 属性変更 異なる属性変更 結合変更 ユーザ介入 削除 変更 変更 削除 変更 削除 変更 削除 変更 変更 マージ ソースまたは 目標選択
【0060】本発明のこの局面に従って、ソース・バー
ジョンおよび目標バージョンによって共有される項目に
対して行われる多数のコンテントおよび属性変更は、自
動的にマージされることができる。デフォルト・マージ
・プロセスは、目標およびソース・バージョンの間の項
目の完全な階層を対象とすることができる。目標および
ソース・バージョンの間の作成変更および削除変更は、
ユーザの介入を必要とすることなく自動的に完了され
る。変更に関する十分な情報が項目の改訂版履歴に記憶
されることによって、目標およびソース・バージョンの
マージ演算の大部分において合理的なデフォルト・アク
ションを実行することが可能となる。デフォルト・アク
ションはこの操作からユーザを解放し、ユーザの介入を
必要とする別の操作にユーザを集中させる。本の発明の
この局面は、多数の相違を有する非常に大きい階層に対
しても容易に適用することが可能であり、また定型業務
の使用にも適している。
【0061】以上、本発明を好ましい実施形態を参照し
て記述したが、本発明の理念を逸脱することなく上記実
施形態に種々の修正または変更を加えることが可能であ
る点は当業者に理解されることであろう。
【0062】本発明には、例として次のような実施様態
が含まれる。 (1)階層に構成された大量の情報を効率的にコピーお
よび共有する方法であって、階層に含まれる複数の項目
の各々に対して行われたすべての変更を標示する改訂版
履歴を各項目毎に作成し、階層が複数のバージョンによ
って共有されるようにするため新しいリンクを階層のル
ートに追加することによって複数の項目を有する階層の
仮想コピーを作成するステップ(a)と、階層が既に非共
有化されてない場合階層のルートまで階層をコピーする
ことによって階層を非共有化するステップ(b)と、修正
される各項目毎にその項目の修正を反映するようにその
項目の改訂版履歴を更新することを通して、非共有化さ
れた階層の複数の項目のうちの1つまたは複数の項目を
修正するステップ(c)と、を含む方法。 (2)階層を非共有化させるステップが実行された後、
階層の複数の下位階層が引き続き共有される、上記
(1)に記載の方法。
【0063】(3)ファイルおよびディレクトリの少な
くとも2つの階層を効率的に比較する方法であって、第
1の階層の各項目および第2の階層の各項目に識別子お
よびそれに関連するデータベース・アドレスを割り当
て、第1の階層のルート・ディレクトリおよび第2の階
層のルート・ディレクトリを相違リストに加えることに
よって相違リストを初期化するステップ(a)と、第1の
階層の第1の項目が第2の階層の第2の項目の第2の識
別子と等しい第1の識別子を持つか否かを判断するステ
ップ(b)と、第1の項目の第1の識別子が第2の階層の
第2の項目の第2の識別子と等しく、従って、第1の項
目および第2の項目が共有されていることが標示されれ
ば、第1の階層の第1の項目と第2の階層の第2の項目
を相違リストの単一エントリにマージするステップ(c)
と、第1の階層の複数項目の各項目毎に、上記ステップ
(b)およびステップ(c)を反復するステップと、第1の階
層の第1の項目が第2の階層の第2の項目の第2のデー
タベース・アドレスと等しい第1のデータベース・アド
レスを有するか否かを判断するステップ(e)と、第1の
階層の第1の項目の第1のデータベース・アドレスが第
2の階層の第2の項目の第2のデータベース・アドレス
と等しければ、相違リストからその単一エントリを削除
するステップ(f)と、相違リストが第1の階層および第
2の階層によって共有されない項目だけを含むようにす
るため第1の階層の複数項目の各々毎に上記ステップ
(e)およびステップ(f)を反復するステップ(g)と、相違
リスト上の項目の各々に関して相違リスト上に複数の下
位項目を加えることによって相違リストを再帰的に拡張
するステップ(h)と、相違リストが第1の階層の複数の
項目および第2の階層の複数の項目の間のすべての相違
を含むようにするため必要に応じて上記ステップ(b)乃
至ステップ(h)を反復するステップ(i)と、を含む方法。
【0064】(4)階層の効率を維持するため少なくと
も2つの改訂版によって使用される階層のいかなる部分
をも再共有化させる方法であって、第1の階層の第1の
項目または第1の階層の一部が第2の階層の第2の項目
または第2の階層の一部と同じ識別子を持つか否かを判
断するステップ(a)と、第1の項目が第2の項目と同じ
識別子を持てば、第1の階層の第1の項目と第2の階層
の第2の項目をペアとさせるステップ(b)と、第1の項
目と第2の項目を比較してそれらが同一であるか否かを
判断するステップ(c)と、第1の項目と第2の項目が同
一であればそれらが同一のデータベース・アドレスを持
つように第1の項目と第2の項目を再共有化させるステ
ップ(d)と、を含む方法。
【0065】(5)適切なデフォルト・アクションを定
義し実行することによって階層のソース・バージョンに
おいて行われた変更を用いて階層の目標バージョンを自
動的に更新する方法であって、階層の1つの項目の1つ
または複数の属性に対して行われる変更の各々を当該項
目の改訂版履歴に変更記録として記録し、複数の項目を
持つ階層の目標バージョンを階層のソース・バージョン
と比較するステップ(a)と、階層の各項目の1つまたは
複数の属性における目標バージョンおよびソース・バー
ジョンの間のいかなる相違をも識別するステップ(b)
と、目標バージョンおよびソース・バージョンの間に相
違が認めらるが階層の各項目に関して項目の相違がない
場合に項目の共通の先祖改訂版を識別するステップ(c)
と、ソース・バージョンを目標バージョンにマージする
ため項目の共通の先祖改訂版の識別によって定義される
デフォルト・アクションを人間の介入なしに実行するス
テップ(d)と、を含む方法。
【0066】(6)項目の共通の先祖改訂版がソース・
バージョンによって参照されていれば、目標バージョン
において項目の属性が変更されていることであり、デフ
ォルト・アクションは何にもしない、上記(5)に記載
の方法。 (7)項目の共通の先祖改訂版が目標バージョンによっ
て参照されていれば、ソース・バージョンにおいて項目
の属性が変更されていることであり、デフォルト・アク
ションが、ソース・バージョンにおける項目の1つまた
は複数の属性変更を目標バージョンに取り入れることで
ある、上記(5)に記載の方法。 (8)項目の共通の先祖改訂版が階層のソース・バージ
ョンまたは目標バージョンのいずれかによって参照され
ていなければ、項目がソース・バージョンおよび目標バ
ージョンの両方において変更された、上記(5)に記載
の方法。 (9)ソース・バージョンおよび目標バージョンにおい
て変更の矛盾がなければ、デフォルト・アクションがソ
ース・バージョンおよび目標バージョン変更を項目に結
合させることであり、限られた値の1つまたは複数の属
性に対する変更がソース・バージョンと目標バージョン
の間で矛盾している場合、デフォルト・アクションは、
ソース・バージョンおよび目標バージョンにおける項目
に対する変更を選択するものであり、範囲が無制限の値
を持つ項目の1つまたは複数の属性に対する変更がソー
ス・バージョンと目標バージョンの間で矛盾している場
合、デフォルト・アクションがない、上記(8)に記載
の方法。
【0067】
【発明の効果】本発明によって、いかなる数のファイル
およびディレクトリに関してもソフトウェアの種々のバ
ージョンを効率的に管理することが可能となり、また、
コードの複数のバージョンを並行的に開発する場合に、
重複する部分と重複しない部分を効率的に管理すること
ができる。
【図面の簡単な説明】
【図1】本発明に従った階層構成情報の共有および非共
有演算を示すブロック図である。
【図2】本発明に従った階層の項目の改訂版履歴の例を
示すブロック図である。
【符号の説明】
12 親の名前 14、30 改訂版履歴 16 共有ディレクトリ 18、24 子の名前 20 子 22 非共有ディレクトリ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】階層に構成された大量の情報を効率的にコ
    ピーおよび共有する方法であって、 階層に含まれる複数の項目の各々に対して行われたすべ
    ての変更を標示する改訂版履歴を各項目毎に作成し、階
    層が複数のバージョンによって共有されるようにするた
    め新しいリンクを階層のルートに追加することによって
    複数の項目を有する階層の仮想コピーを作成するステッ
    プと、 階層が既に非共有化されてない場合階層のルートまで階
    層をコピーすることによって階層を非共有化するステッ
    プと、 修正される各項目毎にその項目の修正を反映するように
    その項目の改訂版履歴を更新することを通して、非共有
    化された階層の複数の項目のうちの1つまたは複数の項
    目を修正するステップと、を含む方法。
JP10252496A 1997-09-17 1998-09-07 階層構成情報のコピーおよび共有方法 Pending JPH11143755A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/931,980 US6216140B1 (en) 1997-09-17 1997-09-17 Methodology for the efficient management of hierarchically organized information
US931,980 1997-09-17

Publications (1)

Publication Number Publication Date
JPH11143755A true JPH11143755A (ja) 1999-05-28

Family

ID=25461599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10252496A Pending JPH11143755A (ja) 1997-09-17 1998-09-07 階層構成情報のコピーおよび共有方法

Country Status (3)

Country Link
US (1) US6216140B1 (ja)
EP (1) EP0903674A1 (ja)
JP (1) JPH11143755A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181350A (ja) * 2007-01-25 2008-08-07 Fuji Xerox Co Ltd 情報処理システム、情報処理装置及びプログラム
KR20110097921A (ko) * 2008-12-02 2011-08-31 아브 이니티오 테크놀로지 엘엘시 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스
US8719691B2 (en) 2006-12-04 2014-05-06 Fuji Xerox Co., Ltd. Document providing system and computer-readable storage medium
US8990773B2 (en) 2011-12-21 2015-03-24 International Business Machines Corporation Retrieving revisions in source code from a plurality of revision history data sets
US9418095B2 (en) 2011-01-14 2016-08-16 Ab Initio Technology Llc Managing changes to collections of data
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US9977659B2 (en) 2010-10-25 2018-05-22 Ab Initio Technology Llc Managing data set objects
US10175974B2 (en) 2014-07-18 2019-01-08 Ab Initio Technology Llc Managing lineage information
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US11971909B2 (en) 2021-01-31 2024-04-30 Ab Initio Technology Llc Data processing system with manipulation of logical dataset groups

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738970B1 (en) * 1999-06-30 2004-05-18 Marimba, Inc. Method and apparatus for identifying changes made to a computer system due to software installation
US6367075B1 (en) 1996-07-24 2002-04-02 Marimba, Inc. Method and apparatus for producing instructions describing the removal of updates to a computer system
GB2341249A (en) * 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
CA2255047A1 (en) * 1998-11-30 2000-05-30 Ibm Canada Limited-Ibm Canada Limitee Comparison of hierarchical structures and merging of differences
US6415435B1 (en) * 1999-03-18 2002-07-02 International Business Machines Corporation Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning
US6889254B1 (en) * 1999-03-30 2005-05-03 International Business Machines Corporation Scalable merge technique for information retrieval across a distributed network
JP3464172B2 (ja) * 1999-06-30 2003-11-05 株式会社次世代情報放送システム研究所 送信装置および送信方法、受信装置および受信方法、ならびに、送受信システムおよび送受信方法
WO2001011486A2 (en) * 1999-08-05 2001-02-15 Oracle Corporation Internet file system
US8335775B1 (en) 1999-08-05 2012-12-18 Oracle International Corporation Versioning in internet file system
US7418439B2 (en) * 2000-03-17 2008-08-26 Twin Peaks Software, Inc. Mirror file system
US6415299B1 (en) * 2000-04-12 2002-07-02 Unisys Corp. Method for merging versions of a model in an object oriented repository
US7523114B2 (en) 2000-04-24 2009-04-21 Ebay Inc. Method and system for categorizing items in both actual and virtual categories
JP2001313639A (ja) * 2000-04-27 2001-11-09 Nec Corp ネットワーク構成データ管理システム及び方法並びに記録媒体
US7788211B2 (en) * 2000-06-16 2010-08-31 Nokia Networks Oy Robust and efficient compression of list of items
US20050010652A1 (en) * 2000-06-22 2005-01-13 Ideogram Design S.A.R.L. Process and device for selective download of data based on index file transmitted from a central server
JP3983961B2 (ja) * 2000-07-18 2007-09-26 株式会社東芝 ディレクトリ情報管理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US6983486B1 (en) * 2000-11-14 2006-01-03 Mcafee, Inc. Method and apparatus for establishing security scanner attributes in a computer system
US6915507B1 (en) * 2000-11-21 2005-07-05 Microsoft Corporation Extensible architecture for project-development systems
US6915397B2 (en) * 2001-06-01 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for generating point in time storage copy
US6948163B2 (en) * 2002-01-29 2005-09-20 International Business Machines Corporation Remote electronic file builder
US7260773B2 (en) * 2002-03-28 2007-08-21 Uri Zernik Device system and method for determining document similarities and differences
US7516475B1 (en) 2002-07-01 2009-04-07 Cisco Technology, Inc. Method and apparatus for managing security policies on a network
US7305419B1 (en) * 2003-03-25 2007-12-04 Hyperion Solutions Corporation Hierarchical reference data management system and method
US7086003B2 (en) * 2003-06-13 2006-08-01 International Business Machines Corporation Attaching multiple files to an electronic document
US7313792B2 (en) * 2003-09-08 2007-12-25 Microsoft Corporation Method and system for servicing software
US7469262B2 (en) * 2003-12-29 2008-12-23 Oracle International Corporation Customizable metadata merging framework
US20050216486A1 (en) * 2004-03-26 2005-09-29 Lucent Technologies Inc. Methods and systems for software release management
US9292276B1 (en) 2004-07-19 2016-03-22 Micro Focus (IP) Development Limited Method and system for utilizing change packages
US7614038B2 (en) * 2004-07-19 2009-11-03 Accurev, Inc. Systems and methods for determining the software components included in a view of a software development project at a particular time
US8548967B1 (en) 2007-12-12 2013-10-01 Accurev, Inc. System for visual query and manipulation of configuration management records
US8473893B2 (en) * 2008-09-30 2013-06-25 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US8341590B1 (en) 2007-12-12 2012-12-25 Accurev, Inc. System for relating workflow status to code component status in a software project
US8667465B2 (en) * 2008-03-31 2014-03-04 Accurev, Inc. System for estimating a software product release time from version information
US7437722B2 (en) * 2004-07-19 2008-10-14 Accurev, Inc. Determining which software component versions of an issue resolution are included in a version of a software development project at a particular time
US20060106889A1 (en) * 2004-11-12 2006-05-18 Mannby Claes-Fredrik U Method, system, and program for managing revisions to a file
US7908254B2 (en) * 2005-06-10 2011-03-15 Hewlett-Packard Development Company, L.P. Identifying characteristics in sets of organized items
US8868524B2 (en) * 2005-08-25 2014-10-21 International Business Machines Corporation Floating merge selection viewer
US8196039B2 (en) * 2006-07-07 2012-06-05 International Business Machines Corporation Relevant term extraction and classification for Wiki content
US8219900B2 (en) * 2006-07-07 2012-07-10 International Business Machines Corporation Programmatically hiding and displaying Wiki page layout sections
US8775930B2 (en) * 2006-07-07 2014-07-08 International Business Machines Corporation Generic frequency weighted visualization component
US20080010609A1 (en) * 2006-07-07 2008-01-10 Bryce Allen Curtis Method for extending the capabilities of a Wiki environment
US8560956B2 (en) * 2006-07-07 2013-10-15 International Business Machines Corporation Processing model of an application wiki
US20080010386A1 (en) * 2006-07-07 2008-01-10 Bryce Allen Curtis Method and apparatus for client wiring model
US7954052B2 (en) * 2006-07-07 2011-05-31 International Business Machines Corporation Method for processing a web page for display in a wiki environment
US8515912B2 (en) * 2010-07-15 2013-08-20 Palantir Technologies, Inc. Sharing and deconflicting data changes in a multimaster database system
US8688749B1 (en) 2011-03-31 2014-04-01 Palantir Technologies, Inc. Cross-ontology multi-master replication
WO2008129619A1 (ja) * 2007-04-09 2008-10-30 Fujitsu Limited ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
JP2009042856A (ja) * 2007-08-07 2009-02-26 Fuji Xerox Co Ltd 文書管理装置、文書管理システム及びプログラム
WO2009043379A1 (en) * 2007-10-04 2009-04-09 Global Infinipool Gmbh Method for accessing a data entity and its versions
WO2009157062A1 (ja) * 2008-06-25 2009-12-30 富士通株式会社 構成管理装置、構成管理プログラム、構成管理方法
US7987202B2 (en) * 2008-06-25 2011-07-26 Microsoft Corporation Contemporaneously sharing resources targeted by a library
US8438558B1 (en) * 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US8447755B1 (en) * 2009-09-29 2013-05-21 Aquire Solutions, Inc. Systems and methods of analyzing changes and data between hierarchies
US9507793B2 (en) 2009-09-29 2016-11-29 International Business Machines Corporation File resharing management
JP5644225B2 (ja) 2010-07-16 2014-12-24 富士ゼロックス株式会社 プログラム及び情報処理装置
JP5776339B2 (ja) * 2011-06-03 2015-09-09 富士通株式会社 ファイル配布方法、ファイル配布システム、マスタサーバ、及びファイル配布プログラム
US8782004B2 (en) 2012-01-23 2014-07-15 Palantir Technologies, Inc. Cross-ACL multi-master replication
US9081975B2 (en) 2012-10-22 2015-07-14 Palantir Technologies, Inc. Sharing information between nexuses that use different classification schemes for information access control
US9501761B2 (en) 2012-11-05 2016-11-22 Palantir Technologies, Inc. System and method for sharing investigation results
US8930897B2 (en) 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
US8903717B2 (en) 2013-03-15 2014-12-02 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8855999B1 (en) 2013-03-15 2014-10-07 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8886601B1 (en) 2013-06-20 2014-11-11 Palantir Technologies, Inc. System and method for incrementally replicating investigative analysis data
US8838538B1 (en) 2013-07-31 2014-09-16 Palantir Technologies, Inc. Techniques for replicating changes to access control lists on investigative analysis data
US9569070B1 (en) 2013-11-11 2017-02-14 Palantir Technologies, Inc. Assisting in deconflicting concurrency conflicts
US9009827B1 (en) 2014-02-20 2015-04-14 Palantir Technologies Inc. Security sharing system
US10572496B1 (en) 2014-07-03 2020-02-25 Palantir Technologies Inc. Distributed workflow system and database with access controls for city resiliency
US9021260B1 (en) 2014-07-03 2015-04-28 Palantir Technologies Inc. Malware data item analysis
US9785773B2 (en) 2014-07-03 2017-10-10 Palantir Technologies Inc. Malware data item analysis
US10621198B1 (en) 2015-12-30 2020-04-14 Palantir Technologies Inc. System and method for secure database replication
US10262053B2 (en) 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10430062B2 (en) 2017-05-30 2019-10-01 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US10956406B2 (en) * 2017-06-12 2021-03-23 Palantir Technologies Inc. Propagated deletion of database records and derived data
US11030494B1 (en) 2017-06-15 2021-06-08 Palantir Technologies Inc. Systems and methods for managing data spills
US10380196B2 (en) 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
US10915542B1 (en) 2017-12-19 2021-02-09 Palantir Technologies Inc. Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574898A (en) * 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5649200A (en) 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
JPH06250895A (ja) * 1993-02-26 1994-09-09 Fujitsu Ltd 構造化データベースシステム
US5787444A (en) * 1993-03-15 1998-07-28 International Business Machines Corp. Method and apparatus for maintaining revision contol of a set of objects within a data processing system
WO1994025913A2 (en) * 1993-04-30 1994-11-10 Novadigm, Inc. Method and apparatus for enterprise desktop management
CN1109444C (zh) * 1994-08-12 2003-05-21 英国电讯有限公司 数据管理系统的组态方法
US6029195A (en) * 1994-11-29 2000-02-22 Herz; Frederick S. M. System for customized electronic identification of desirable objects
US5608903A (en) * 1994-12-15 1997-03-04 Novell, Inc. Method and apparatus for moving subtrees in a distributed network directory
US5790848A (en) * 1995-02-03 1998-08-04 Dex Information Systems, Inc. Method and apparatus for data access and update in a shared file environment
JPH0954735A (ja) * 1995-06-07 1997-02-25 Fuji Xerox Co Ltd 情報処理方法及び情報処理装置
US5706510A (en) * 1996-03-15 1998-01-06 Hewlett-Packard Company Zymbolic history management system
US5812773A (en) * 1996-07-12 1998-09-22 Microsoft Corporation System and method for the distribution of hierarchically structured data

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719691B2 (en) 2006-12-04 2014-05-06 Fuji Xerox Co., Ltd. Document providing system and computer-readable storage medium
JP2008181350A (ja) * 2007-01-25 2008-08-07 Fuji Xerox Co Ltd 情報処理システム、情報処理装置及びプログラム
KR20110097921A (ko) * 2008-12-02 2011-08-31 아브 이니티오 테크놀로지 엘엘시 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스
JP2012510687A (ja) * 2008-12-02 2012-05-10 アビニシオ テクノロジー エルエルシー データ管理システム内のデータセットのインスタンスのマッピング
US11341155B2 (en) 2008-12-02 2022-05-24 Ab Initio Technology Llc Mapping instances of a dataset within a data management system
US9977659B2 (en) 2010-10-25 2018-05-22 Ab Initio Technology Llc Managing data set objects
US9418095B2 (en) 2011-01-14 2016-08-16 Ab Initio Technology Llc Managing changes to collections of data
US8990773B2 (en) 2011-12-21 2015-03-24 International Business Machines Corporation Retrieving revisions in source code from a plurality of revision history data sets
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US10318283B2 (en) 2014-07-18 2019-06-11 Ab Initio Technology Llc Managing parameter sets
US10175974B2 (en) 2014-07-18 2019-01-08 Ab Initio Technology Llc Managing lineage information
US11210086B2 (en) 2014-07-18 2021-12-28 Ab Initio Technology Llc Managing parameter sets
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US11971909B2 (en) 2021-01-31 2024-04-30 Ab Initio Technology Llc Data processing system with manipulation of logical dataset groups

Also Published As

Publication number Publication date
EP0903674A1 (en) 1999-03-24
US6216140B1 (en) 2001-04-10

Similar Documents

Publication Publication Date Title
JPH11143755A (ja) 階層構成情報のコピーおよび共有方法
US11308071B2 (en) Update and query of a large collection of files that represent a single dataset stored on a blob store
EP2356560B1 (en) Atomic multiple modification of data in a distributed storage system
US9135287B2 (en) Distributed, transactional key-value store
US5778389A (en) Method and system for synchronizing computer file directories
KR100398753B1 (ko) 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템
CA1316262C (en) Version management tool
CA2504322C (en) Apparatus and method for hardware-based file system
JPH04229372A (ja) メモリ空間再使用管理方法及びシステム
KR100280221B1 (ko) 데이터 베이스에 있어서의 메모리 공간의 최적화 방법
JPWO2005086003A1 (ja) データベース・システム
JP3727076B2 (ja) プログラム管理方法および装置
US6038569A (en) System for data structure loading with concurrent image copy
US7996361B1 (en) Method and system of providing replica files within a fileset
US7650352B2 (en) System and method for increasing availability of an index
JP2005316708A (ja) 階層記憶装置、その復旧方法、及び復旧プログラム
Wieczerzycki Advanced versioning mechanisms supporting CSCW environments
GB2367165A (en) Atomically and persistently swapping resource groups in a backup system
US8452823B2 (en) Method for coordinating relationships between multiple physical entities
Wieczerzycki et al. Version support for cad/case databases
WO2014118560A1 (en) Method and system for data storage
Chong et al. Rapid Recovery of Very Large Memory Resident Data Objects

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060912