專利名稱:合并電子文檔的多個(gè)不同版本的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件開發(fā),更具體地說,涉及軟件開發(fā)工具。
背景技術(shù):
現(xiàn)代軟件本質(zhì)上很復(fù)雜并且通常由許多不同文檔的集合形成。由于文檔自身的大小和復(fù)雜性可以很重要,所以通常的做法是將開發(fā)和維護(hù)每個(gè)文檔的責(zé)任指派給一組開發(fā)者。當(dāng)兩個(gè)開發(fā)者更改同一文檔時(shí),有必要將每個(gè)個(gè)人和/或團(tuán)隊(duì)的貢獻(xiàn)組合成將被結(jié)合到軟件內(nèi)部版本(build)中的單個(gè)文檔。
一種基于軟件的工具(稱為合并工具)能夠?qū)⒉煌瑐€(gè)人或團(tuán)隊(duì)的貢獻(xiàn)組合成合并后的文檔。通常,合并工具自動(dòng)地比較兩個(gè)或更多文檔是將被組合的不同文檔還是同一文檔的不同版本。所述文檔可以是單獨(dú)的文件,包括但不限于,源代碼文件、建模語言文件或其它電子文檔。被比較的文檔之間的任何差異(稱為增量)都被合并工具所標(biāo)識(shí)。每個(gè)增量可以是指定對(duì)基線文檔做出的一個(gè)或多個(gè)更改的軟件對(duì)象或其它數(shù)據(jù)結(jié)構(gòu)。
傳統(tǒng)的合并工具可以接受從兩個(gè)或更多文檔的比較生成的增量并將更改寫入合并后的文檔。被接受的增量被在基線文檔上實(shí)現(xiàn)以生成合并后的文檔。在這樣做時(shí),合并工具通常就從文檔的每個(gè)不同版本標(biāo)識(shí)的增量是否彼此沖突進(jìn)行有限的分析。此類分析可以包括在將要合并的文檔之間進(jìn)行逐行比較或者在某些情況下進(jìn)行“組塊”分析。但是,合并工具并不分析文檔的結(jié)構(gòu)以確定相關(guān)性和內(nèi)部引用,以便確保保持合并后的文檔的完整性。
為了說明,當(dāng)合并源代碼文檔的兩個(gè)或更多不同版本時(shí),一個(gè)開發(fā)者可以向現(xiàn)有方法添加引用,同時(shí)另一個(gè)開發(fā)者可以刪除同一方法。兩個(gè)增量將被傳統(tǒng)的合并工具所標(biāo)識(shí)。但是,由于更改發(fā)生在文檔的不同部分,傳統(tǒng)的合并工具將不會(huì)檢測(cè)出引用被破壞。也就是說,傳統(tǒng)的合并工具所執(zhí)行的分析不會(huì)檢測(cè)出來自依賴于另一個(gè)開發(fā)者移除或刪除的源代碼部分的開發(fā)者的貢獻(xiàn)。結(jié)果,兩個(gè)增量都將被接受到合并后的文檔中。這產(chǎn)生了具有對(duì)不再存在的方法的引用的合并后的文檔。合并后的文檔不再保持引用的完整性。
這只是使用傳統(tǒng)的合并工具可以出現(xiàn)的一類問題的一個(gè)實(shí)例。由于傳統(tǒng)的合并工具不能理解正在被合并的文本的句法或語義,所以在合并操作期間檢測(cè)這樣的錯(cuò)誤就成了問題。這種類型的錯(cuò)誤直到源代碼被編譯時(shí)才能被檢測(cè)到。但是在開發(fā)過程中,編譯發(fā)生在晚于合并的時(shí)間,從而耽擱了開發(fā)者察覺到任何潛在問題的時(shí)間。晚期檢測(cè)引起了開發(fā)過程的額外成本和時(shí)間。
發(fā)明內(nèi)容
本發(fā)明提供了一種用于將電子文檔合并為合并后的文檔的解決辦案。本發(fā)明的一個(gè)實(shí)施例可以包括一種合并結(jié)構(gòu)化的電子文檔的多個(gè)不同版本的方法。所述方法可以包括標(biāo)識(shí)所述電子文檔的多個(gè)不同版本,其中所述電子文檔具有定義的結(jié)構(gòu)。所述方法還可以包括確定所述不同版本之間的多個(gè)增量和根據(jù)所述電子文檔的所述定義的結(jié)構(gòu)來確定所述多個(gè)增量中的單個(gè)增量之間的關(guān)系。根據(jù)所述確定的關(guān)系,一個(gè)或多個(gè)所述增量可以被有選擇地接受以創(chuàng)建合并后的電子文檔。
本發(fā)明的另一個(gè)實(shí)施例可以包括機(jī)器可讀存儲(chǔ)器,其被編程以使機(jī)器執(zhí)行此處所述的各個(gè)步驟。
附圖中示出了當(dāng)前優(yōu)選的實(shí)施例;但是可以理解,本發(fā)明并不限于示出的精確布置和工具圖1是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于合并電子文檔的系統(tǒng)的示意圖;圖2是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的從將被合并的電子文檔的不同版本的比較中標(biāo)識(shí)的增量的表;圖3是示出了由圖2的表所指定的先決條件關(guān)系的有向圖;圖4是示出了由圖2的表所指定的從屬關(guān)系的有向圖;圖5是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的從將被合并的電子文檔的不同版本的比較中標(biāo)識(shí)的增量的表;圖6是示出了由圖5的表所指定的先決條件關(guān)系的有向圖;圖7是示出了由圖5的表所指定的從屬關(guān)系的有向圖;圖8是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的合并電子文檔的方法的流程圖。
具體實(shí)施例方式
本發(fā)明提供了一種用于合并電子文檔的解決辦案。在本發(fā)明的一個(gè)實(shí)施例中,可以標(biāo)識(shí)沖突的增量并提供通知,從而警告開發(fā)者存在沖突。這樣的通知允許開發(fā)者在進(jìn)行到開發(fā)過程的下一個(gè)階段之前對(duì)被合并的電子文檔執(zhí)行任何需要的編輯。在另一個(gè)實(shí)施例中,可以標(biāo)識(shí)增量之間的關(guān)系,例如某一增量是否依賴于另一個(gè)增量,或者是另一個(gè)增量的先決條件??梢詰?yīng)用一組規(guī)則來從合并后的文檔確定哪個(gè)增量將被接受或拒絕。
圖1是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于合并電子文檔的系統(tǒng)的示意圖。如此處所使用的術(shù)語文檔指軟件模塊或其他結(jié)構(gòu)化的電子文件。所述文件可以指定文本,包括但不限于,源代碼、基于計(jì)算機(jī)的描述語言、腳本語言和/或建模語言。在一個(gè)實(shí)施例中,例如,文檔可以是以JAVA編程語言編寫的大型程序的單個(gè)部分。但是,也可以使用其它編程語言(無論是高級(jí)還是低級(jí))。在另一個(gè)實(shí)施例中,文檔可以包括通用建模語言(UML),其是一種用于表達(dá)面向?qū)ο蟮姆治龊驮O(shè)計(jì)決策的標(biāo)準(zhǔn)。這樣的文檔可以是源代碼文件或者來自于源代碼文件。在這種情況下,文檔105和110可以是同一文件的不同版本。
合并工具100可以被實(shí)現(xiàn)為在諸如臺(tái)式計(jì)算機(jī)系統(tǒng)、膝上型計(jì)算機(jī)系統(tǒng)、服務(wù)器之類的(以下稱為“計(jì)算機(jī)系統(tǒng)”)適合的信息處理系統(tǒng)中執(zhí)行的一個(gè)或多個(gè)計(jì)算機(jī)程序。如圖所示,合并工具100可以獲得一個(gè)或多個(gè)文檔105和110。合并工具100可以包括一組用于標(biāo)識(shí)文檔105、110之間的差異或更改(稱為增量)的規(guī)則。所述規(guī)則還可以指定其中增量將被接受以生成合并后的文檔115的次序和方式。將參考圖2-7更詳細(xì)地說明合并工具100所使用的規(guī)則。在任何情況下,規(guī)則向合并工具提供了與將被處理的文檔的結(jié)構(gòu)有關(guān)的語義和句法知識(shí)。
通常,文檔105、110中的一個(gè)文檔被選擇為基線文檔。在這種情況下,例如,文檔105可以被選擇為基線文檔。相應(yīng)地,合并工具100將文檔110與基線文檔105進(jìn)行比較。在兩個(gè)文檔105與110之間標(biāo)識(shí)的任何增量可以被從基線文檔105的角度來表達(dá)。也就是說,如果基線文檔105與文檔110的比較指示文檔110包括從基線文檔105遺失的構(gòu)造,則可以生成添加增量。所述添加增量指定包括在文檔110中但從基線文檔105中遺失的軟件構(gòu)造將被添加到基線文檔105。類似地,如果基線文檔105包括從文檔110遺失的軟件構(gòu)造,則可以生成刪除增量。所述刪除增量指定沒有包括在文檔110中的基線文檔105中的軟件構(gòu)造將被從基線文檔105刪除。
其它種類的增量可以包括更改增量和移動(dòng)增量。更改增量可以指示基線文檔105中的特定軟件構(gòu)造不同于文檔110中的相同或并行構(gòu)造。盡管這些構(gòu)造在某些方面彼此不同,但是兩個(gè)構(gòu)造可以位于每個(gè)文檔內(nèi)的相同相對(duì)位置。更改增量可以指定基線文檔105中的軟件構(gòu)造將被更改以與文檔110中其對(duì)應(yīng)的軟件構(gòu)造相匹配。
移動(dòng)增量可以指示與文檔110中的同一軟件構(gòu)造的位置相比,基線文檔105中的特定軟件構(gòu)造位于不同的相對(duì)位置。移動(dòng)增量可以指定基線文檔105中的軟件構(gòu)造將被移動(dòng)以與文檔110中的軟件構(gòu)造的位置相對(duì)應(yīng)。
軟件構(gòu)造(或構(gòu)造)指用于特定目的的數(shù)據(jù)結(jié)構(gòu)。構(gòu)造可以指單個(gè)編程語言語句或多于一個(gè)語句的集合,例如循環(huán)、方法、函數(shù)等,其中所述集合具有特定的功能。構(gòu)造還由諸如電氣和電子工程師協(xié)會(huì)(IEEE)和美國(guó)國(guó)家標(biāo)準(zhǔn)化組織(ANSI)之類的組織定義。這些組織提出用于不同的基于計(jì)算機(jī)的編程、腳本和/或建模語言(例如C、C++等)的標(biāo)準(zhǔn)。
圖2是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的從將被合并的文檔的不同版本的比較中標(biāo)識(shí)的增量的表200。如圖所示,表200的第一列指示增量標(biāo)號(hào)1、2或3。第二列(標(biāo)題為“元素更改”)指示由每個(gè)增量指定的更改。在這種情況下,每個(gè)增量是由“+”符號(hào)前綴表示的添加增量。符號(hào)“E”指元素,其可以是先前所述的任何種類的不同軟件構(gòu)造的簡(jiǎn)寫。
表200的第三列(具有標(biāo)題“引用的元素(多個(gè))”)指定由將被添加的元素所引用的特定的一個(gè)或多個(gè)元素?!耙玫脑?多個(gè))”列中的元素還是所標(biāo)識(shí)的增量的主體(subject)。也就是說,引用的元素還已被標(biāo)識(shí)用于添加還是刪除。因此,增量1是指定元素2(或E2)將被添加的添加增量。如表200所指示的,+E2包括對(duì)E3的引用。增量2是指定E3將被添加的添加增量。+E3包括對(duì)E4的引用。增量3是指定E4將被添加的添加增量。+E4不包括對(duì)其它增量的引用。
回顧表200,應(yīng)當(dāng)指出,增量與增量所引用的元素之間的關(guān)系必須被遵守以維護(hù)引用的完整性。也就是說,如果+E2被接受以便被包括到合并后的文檔中,由于+E2引用了E3,+E3也必須被接受。繼續(xù)地,如果+E3將被接受,由于+E3引用了E4,E4也必須被接受。
圖3是示出了由圖2的表所指定的和由連接增量的實(shí)線箭頭所指示的先決條件關(guān)系的有向圖。圖3描述了先決條件添加增量關(guān)系和用于處理這樣的增量的規(guī)則。當(dāng)添加增量被合并工具接受時(shí),先決條件添加關(guān)系必須被遵守以維護(hù)引用的整體性。先決條件添加增量關(guān)系可以被定義為如下給定兩個(gè)添加增量D1和D2,如果D1包括由D2包括的添加元素所引用的添加元素,則D1是D2的先決條件。
通常,如果特定的添加增量(稱為目標(biāo)添加增量)被考慮接受到合并后的文檔,則所有用于該目標(biāo)添加增量的先決條件添加增量必須首先被接受。所述目標(biāo)增量和所述目標(biāo)的任何先決條件增量可以被看作將作為組被接受的原子單元。圖3指示如果增量+E2被選擇為目標(biāo)并被考慮接受,則增量+E4和+E3必須被接受。增量+E4必須首先被接受,隨后是增量+E3。如果增量+E3被選擇為目標(biāo)并被考慮接受,則增量+E4必須首先被接受。因此,增量+E4是增量+E3的先決條件。類似地,增量+E3是增量+E2的先決條件。在此實(shí)例中,如果增量+E3被接受,則不必接受增量+E2。類似地,如果增量+E4被接受,則不必接受增量+E3或+E2。
圖4是示出了由圖2的表所指定的和由虛線指示的從屬關(guān)系的有向圖。圖4描述了從屬添加關(guān)系和用于處理這樣的增量的規(guī)則。當(dāng)(或如果)添加增量被合并工具拒絕時(shí),這些從屬添加關(guān)系必須被遵守以維護(hù)引用的整體性。從屬添加增量關(guān)系可以被定義為如下給定兩個(gè)添加增量D1和D2,如果D1是D2的先決條件,則D2是D1的從屬。通常,為了拒絕目標(biāo)添加增量,所有依賴該目標(biāo)添加增量的添加增量都必須先于目標(biāo)增量被拒絕。目標(biāo)增量和任何從屬添加增量可以被看作將作為組被拒絕的原子單元。
圖4示出了增量+E2依賴增量+E3并且增量+E3依賴增量+E4。為了說明,如果增量+E3被選擇為目標(biāo)增量并考慮用于拒絕,則增量+E2必須先于該目標(biāo)被拒絕。值得注意地,在這種情況下增量+E4無需被拒絕。如果增量+E4被選擇為目標(biāo)并考慮用于拒絕,則增量+E2必須首先被拒絕,隨后是增量+E3。增量+E2和+E3都在目標(biāo)增量+E4之前被拒絕。在另一個(gè)實(shí)例中,如果增量+E2被選擇為目標(biāo)并考慮用于拒絕,則增量+E3和增量+E4都無需被拒絕。
下表描述了兩個(gè)文檔(版本1和版本1.1)之間的實(shí)例合并,其中版本1是基線文檔。當(dāng)比較兩個(gè)版本時(shí),合并標(biāo)識(shí)了增量+E2、+E3和+E4。雖然以下示出的實(shí)例說明了以標(biāo)記語言格式(例如可擴(kuò)展標(biāo)記語言(XML))指定文檔的情況,但是應(yīng)當(dāng)理解,本發(fā)明并不局限于此。例如,本發(fā)明可以被應(yīng)用于數(shù)據(jù)庫模式或任何二進(jìn)制數(shù)據(jù)。
圖5是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的從將被合并的文檔的不同版本的比較中標(biāo)識(shí)的增量的表500。如圖所示,表500示出了另一組增量1、2和3。在這種情況下,每個(gè)增量是由元素描述之后的“-”符號(hào)后綴表示的刪除增量。表500的第三列指定了由將被刪除的每個(gè)元素引用的特定的元素。如所指出的,“引用的元素(多個(gè))”列中列出的元素也是標(biāo)識(shí)的增量的主體。也就是說,引用的元素也已被標(biāo)識(shí)用于刪除。
因此,增量1是指定E2將被刪除的刪除增量。E2引用另一個(gè)元素E3。增量2是指定E3將被刪除的刪除增量。E3-包括對(duì)E4的引用。增量3是指定E4將被刪除的刪除增量。E4-不包括對(duì)其他元素的引用。標(biāo)識(shí)的增量與“引用的元素(多個(gè))”列中列出的元素(即,那些由將被刪除的元素引用的元素)之間的關(guān)系必須被遵守以維護(hù)引用的完整性。因此,如果增量E3-在合并文檔中被接受—意味著增量E3將被刪除,則增量E2-也必須被接受,從而導(dǎo)致增量E2的移除。
圖6是示出了由圖5的表所指定的先決條件關(guān)系的有向圖。圖6描述了先決條件刪除增量關(guān)系和相應(yīng)的規(guī)則。當(dāng)刪除增量被接受時(shí),先決條件刪除增量關(guān)系必須被遵守以維護(hù)引用的完整性。先決條件刪除增量關(guān)系可以被定義為如下給定兩個(gè)刪除增量D1和D2,如果D1包括引用了D2所包括的刪除元素的刪除元素,則D1是D2的先決條件。
通常,如果刪除增量被選擇為目標(biāo)并考慮用于接受,則在接受所述目標(biāo)之前,所述目標(biāo)的所有先決條件刪除增量必須被接受。目標(biāo)刪除增量和任何先決條件刪除增量可以被看作將作為組被接受的原子單元。如圖6所示,增量E2-是增量E3-的先決條件并且增量E3-是增量E4-的先決條件。因此,如果增量E3-被選擇為目標(biāo)并考慮用于接受,則增量E2-必須首先被接受。但是,增量E4-無需被接受。如果增量E4-被選擇為目標(biāo)并考慮用于接受,則增量E2-必須首先被接受,隨后是增量E3-,然后是增量E4-。最終,如果增量E2-被選擇為目標(biāo)并考慮用于接受,則在接受增量E2-之前,增量E3-或增量E4-都無需被接受。
圖7是示出了由圖5的表所指定的從屬關(guān)系的有向圖。圖7描述了從屬刪除增量關(guān)系和用于處理這樣的關(guān)系的規(guī)則。從屬刪除增量關(guān)系可以被定義為如下給定兩個(gè)刪除增量D1和D2,如果D1是D2的先決條件,則D2是D1的從屬。通常,如果刪除增量被選擇為目標(biāo)增量并考慮用于拒絕,則該目標(biāo)增量的所有從屬刪除增量必須首先被拒絕。目標(biāo)刪除增量和所述目標(biāo)的從屬刪除增量可以被看作將作為組被拒絕的原子單元。
如圖7所示,如果增量E3-被選擇為目標(biāo)并考慮用于拒絕,則增量E4-必須先于該目標(biāo)而被拒絕。但是,不必拒絕增量E2-。如果增量E2-被拒絕,則增量E4-必須首先被拒絕,而后是增量E3-,繼之以增量E2-。如果增量E4-被選擇為目標(biāo)并考慮用于拒絕,則增量E3-和增量E4-都無需被拒絕。
下表描述了兩個(gè)文檔(版本1和版本1.1)之間的實(shí)例合并,其中版本1是基線文檔。當(dāng)比較兩個(gè)版本時(shí),合并標(biāo)識(shí)了增量E2-、E3-和E4-。如所指出的,盡管所示實(shí)例說明了以標(biāo)記語言格式指定文檔的情況,但是應(yīng)當(dāng)理解,本發(fā)明并不局限于此。
圖8是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的合并文檔的不同版本的方法800的流程圖。方法800可以由參考圖1描述的合并工具來執(zhí)行。方法800開始于步驟805,在步驟805,可以標(biāo)識(shí)兩個(gè)或更多將被合并的文檔。如所指出的,所述文檔可以是同一文檔的不同版本。在步驟810,使用一個(gè)版本作為基線文檔,文檔的不同版本可以被分析以標(biāo)識(shí)每個(gè)版本之間的增量。
在步驟815,合并工具可以確定標(biāo)識(shí)的每個(gè)增量的類型。例如,每個(gè)增量根據(jù)情況可以被分類為刪除增量或添加增量。在步驟820,可以確定標(biāo)識(shí)的增量之間的關(guān)系。也就是說,根據(jù)稱為目標(biāo)增量的其它增量,增量可以被分類為從屬或先決條件。應(yīng)當(dāng)理解,雖然可以構(gòu)造如此處所述的有向圖以便分類增量關(guān)系,但是無需生成此類數(shù)據(jù)結(jié)構(gòu)。
在步驟825,判定是否有任何增量彼此沖突??梢愿鶕?jù)在增量之間標(biāo)識(shí)的關(guān)系來做出沖突是否存在的判定。例如,如果一個(gè)增量指定移除由另一個(gè)增量添加的元素所引用的元素,則存在沖突。當(dāng)合并工具具有語義和句法處理能力時(shí)(就具有定義的結(jié)構(gòu)的文檔而言)可以做出判定。所述結(jié)構(gòu)可以由文檔類型或其中包括的文本和/或語言的類型來定義。如果存在沖突,所述方法可以繼續(xù)到步驟830。如果不存在,所述方法可以繼續(xù)到步驟835,在步驟835,增量可以被接受。
在步驟830,合并工具可以可選地提供沖突的可聽和/或視覺通知。進(jìn)而,合并工具可以提供對(duì)沖突性質(zhì)的描述。所述描述可以包括諸如沖突增量、由沖突增量引用的元素、由于沖突增量而將被添加或移除的元素、破壞的引用之類的信息。也可以向計(jì)算機(jī)操作者提供是允許合并工具根據(jù)此處描述的規(guī)則繼續(xù)自動(dòng)的合并還是停止合并過程的選擇。因此,如果希望,操作者可以停止處理以有利于編輯文檔以便糾正標(biāo)識(shí)的一個(gè)或多個(gè)沖突。
在步驟840,根據(jù)所述關(guān)系,增量可以被有選擇地接受到合并后的文檔中。例如,給定目標(biāo)增量的所有先決條件增量可以在接受所述目標(biāo)增量之前被遞歸地接受。給定目標(biāo)增量的所有從屬增量可以在接受所述目標(biāo)增量之前被遞歸地拒絕。合并工具可以應(yīng)用此處描述的規(guī)則來確定是否接受和/或拒絕特定的增量。如所指出的,使用此處描述的規(guī)則,一個(gè)或多個(gè)增量的特定集合可以被看作可以作為組被接受或拒絕的原子單元。
此處披露的發(fā)明布置提供了一種用于在兩個(gè)或更多文檔上執(zhí)行合并的解決方案。通常,合并工具編程有將被合并的文本和/或文檔類型的構(gòu)造和結(jié)構(gòu)知識(shí)。因此,合并工具可以標(biāo)識(shí)增量、應(yīng)用一個(gè)或多個(gè)規(guī)則來標(biāo)識(shí)增量之間的關(guān)系,以及根據(jù)規(guī)則和/或關(guān)系來有選擇地接受或拒絕增量。這樣,本發(fā)明可以合并兩個(gè)或更多文檔,或者合并文檔的不同版本,使得這些文檔內(nèi)的引用完整性得到維護(hù)。
本發(fā)明可以以硬件、軟件或硬件和軟件的組合來實(shí)現(xiàn)。本發(fā)明可以以集中的方式在一個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)或者以分布的方式實(shí)現(xiàn),在所述分布方式中,不同部件可以跨多個(gè)互連的計(jì)算機(jī)系統(tǒng)分布。任何種類的計(jì)算機(jī)系統(tǒng)或其它適于執(zhí)行此處所述的方法的裝置都是適合的。典型的硬件和軟件的組合可以是具有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)所述程序被加載和執(zhí)行時(shí),所述程序控制所述計(jì)算機(jī)系統(tǒng)以使得其執(zhí)行此處所述的方法。
本發(fā)明還可以被嵌入計(jì)算機(jī)程序產(chǎn)品,其包括允許實(shí)現(xiàn)此處所述的方法的所有特征,并且當(dāng)被加載到計(jì)算機(jī)系統(tǒng)中時(shí),其能夠執(zhí)行這些方法。當(dāng)前上下文中的計(jì)算機(jī)程序或軟件是指一組指令的以任何語言、代碼或符號(hào)表示的任何表達(dá),旨在使具有信息處理能力的系統(tǒng)直接執(zhí)行特定的功能,或者執(zhí)行以下兩者之一或全部后執(zhí)行特定的功能a)轉(zhuǎn)換為另一種語言、代碼或符號(hào);b)以不同的材料形式再現(xiàn)。
在不偏離本發(fā)明的精神或本質(zhì)屬性的情況下,可以以其它形式來實(shí)施本發(fā)明。因此,應(yīng)當(dāng)參考以下權(quán)利要求,而不是上述說明書,以此作為本
權(quán)利要求
1.一種在軟件開發(fā)過程期間合并電子文檔的多個(gè)不同版本的方法,所述方法包括標(biāo)識(shí)所述電子文檔的所述多個(gè)不同版本,其中所述電子文檔具有定義的結(jié)構(gòu);確定所述不同版本之間的多個(gè)增量;根據(jù)所述電子文檔的所述定義的結(jié)構(gòu)來確定所述多個(gè)增量中的單個(gè)增量之間的關(guān)系;以及根據(jù)所述確定的關(guān)系有選擇地接受所述多個(gè)增量中的至少一個(gè)增量以創(chuàng)建合并后的電子文檔。
2.根據(jù)權(quán)利要求1的方法,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少一個(gè)增量標(biāo)識(shí)為關(guān)于目標(biāo)增量的先決條件增量。
3.根據(jù)權(quán)利要求2的方法,所述有選擇地接受增量的步驟包括在接受所述目標(biāo)增量之前遞歸地接受所有先決條件增量。
4.根據(jù)權(quán)利要求1的方法,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少一個(gè)增量標(biāo)識(shí)為關(guān)于目標(biāo)增量的從屬增量。
5.根據(jù)權(quán)利要求4的方法,所述有選擇地接受增量的步驟包括在拒絕所述目標(biāo)增量之前遞歸地拒絕所有從屬增量。
6.根據(jù)權(quán)利要求1的方法,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少第一增量標(biāo)識(shí)為先決條件增量或從屬增量。
7.根據(jù)權(quán)利要求6的方法,還包括將所述至少第一增量標(biāo)識(shí)為添加增量。
8.根據(jù)權(quán)利要求6的方法,還包括將所述至少第一增量標(biāo)識(shí)為刪除增量。
9.根據(jù)權(quán)利要求6的方法,還包括將所述至少第一增量標(biāo)識(shí)為移動(dòng)增量。
10.根據(jù)權(quán)利要求6的方法,還包括將所述至少第一增量標(biāo)識(shí)為更改增量。
11.根據(jù)權(quán)利要求1的方法,還包括在所述有選擇地接受增量的步驟之前,檢測(cè)至少兩個(gè)增量之間的沖突;以及提供所述沖突的通知。
12.一種機(jī)器可讀存儲(chǔ)器,其上存儲(chǔ)有具有多個(gè)代碼部分的計(jì)算機(jī)程序,所述代碼部分可由機(jī)器執(zhí)行以使得所述機(jī)器執(zhí)行以下步驟標(biāo)識(shí)電子文檔的多個(gè)不同版本,其中所述電子文檔具有定義的結(jié)構(gòu);確定所述不同版本之間的多個(gè)增量;根據(jù)所述電子文檔的所述定義的結(jié)構(gòu)來確定所述多個(gè)增量中的單個(gè)增量之間的關(guān)系;以及根據(jù)所述確定的關(guān)系有選擇地接受所述多個(gè)增量中的至少一個(gè)增量以創(chuàng)建合并后的電子文檔。
13.根據(jù)權(quán)利要求12的機(jī)器可讀存儲(chǔ)器,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少一個(gè)增量標(biāo)識(shí)為關(guān)于目標(biāo)增量的先決條件增量。
14.根據(jù)權(quán)利要求13的機(jī)器可讀存儲(chǔ)器,所述有選擇地接受增量的步驟包括在接受所述目標(biāo)增量之前遞歸地接受所有先決條件增量。
15.根據(jù)權(quán)利要求12的機(jī)器可讀存儲(chǔ)器,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少一個(gè)增量標(biāo)識(shí)為關(guān)于目標(biāo)增量的從屬增量。
16.根據(jù)權(quán)利要求15的機(jī)器可讀存儲(chǔ)器,所述有選擇地接受增量的步驟包括在拒絕所述目標(biāo)增量之前遞歸地拒絕所有從屬增量。
17.根據(jù)權(quán)利要求12的機(jī)器可讀存儲(chǔ)器,所述確定關(guān)系的步驟包括將來自所述多個(gè)增量的至少第一增量標(biāo)識(shí)為先決條件增量或從屬增量。
18.根據(jù)權(quán)利要求17的機(jī)器可讀存儲(chǔ)器,還包括將所述至少第一增量標(biāo)識(shí)為添加增量和刪除增量中的至少一個(gè)增量。
19.根據(jù)權(quán)利要求17的機(jī)器可讀存儲(chǔ)器,還包括將所述至少第一增量標(biāo)識(shí)為更改增量和移動(dòng)增量中的至少一個(gè)增量。
20.根據(jù)權(quán)利要求12的機(jī)器可讀存儲(chǔ)器,還包括在所述有選擇地接受增量的步驟之前,檢測(cè)至少兩個(gè)增量之間的沖突;以及提供所述沖突的通知。
全文摘要
一種在軟件開發(fā)過程期間合并電子文檔的多個(gè)不同版本的方法,所述方法可以包括標(biāo)識(shí)所述電子文檔的所述多個(gè)不同版本。所述電子文檔可以具有定義的結(jié)構(gòu)。所述方法還可以包括確定所述不同版本之間的多個(gè)增量和根據(jù)所述電子文檔的所述定義的結(jié)構(gòu)來確定所述多個(gè)增量中的單個(gè)增量之間的關(guān)系。根據(jù)所述確定的關(guān)系,所述多個(gè)增量中的一個(gè)或多個(gè)增量可以在合并后的電子文檔中被有選擇地接受。
文檔編號(hào)G06F9/44GK1783093SQ20051012919
公開日2006年6月7日 申請(qǐng)日期2005年11月14日 優(yōu)先權(quán)日2004年12月1日
發(fā)明者S·科旺, M·穆斯塔法, F·普蘭特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司