專(zhuān)利名稱(chēng):版本管理系統(tǒng)和方法以及同步控制設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)中軟件方案的版本管理,尤其涉及不同版本管 理系統(tǒng)所管理的乂>共元素的同步。
背景技術(shù):
為了能夠開(kāi)發(fā)出大規(guī)模和高質(zhì)量的軟件解決方案,協(xié)作軟件開(kāi)發(fā)在現(xiàn) 代軟件業(yè)中越來(lái)越普遍。版本管理系統(tǒng)是進(jìn)行并行和分布式軟件開(kāi)發(fā)的有 利工具。版本管理系統(tǒng)通常包括版本管理控制器。用戶當(dāng)完成文件的編輯 時(shí),可以從客戶端向版本管理控制器發(fā)出提交該文件的請(qǐng)求。版本管理控 制器根據(jù)該請(qǐng)求更新該文件在版本管理系統(tǒng)中的存儲(chǔ)和版本,并向客戶端 返回請(qǐng)求的處理結(jié)果。
一般而言,軟件方案可以被分成兩個(gè)層次的實(shí)體。第一個(gè)層次的實(shí)體 被稱(chēng)為項(xiàng)目,第二個(gè)層次的實(shí)體被稱(chēng)為元素,項(xiàng)目可由一定數(shù)量的元素組 成。根據(jù)項(xiàng)目中元素的物理存儲(chǔ)粒度,可以將軟件方案分成兩種。 一種是
基于文件的(類(lèi)似于使用HTML腳本等等的常見(jiàn)web項(xiàng)目),其中項(xiàng)目中 的每個(gè)元素是獨(dú)立的文件。另一種是基于節(jié)點(diǎn)的(類(lèi)似于IBM公司的 Domino Application),其中所有元素均是項(xiàng)目(例如NSF文件)的設(shè)計(jì)元素 (節(jié)點(diǎn))。相應(yīng)地,存在支持這兩種軟件方案的版本管理系統(tǒng)。支持基于文 件的軟件方案的版本管理系統(tǒng)例如為基于開(kāi)放源碼的CVS(并行版本系 統(tǒng)),基于開(kāi)放源碼的SVN(Subversion,即版^^制系統(tǒng)),IBM公司的 ClearCase , Borland 公司的 StartTeam, Microsoft 公司的 Visual SourceSafe等等。支持基于節(jié)點(diǎn)的軟件方案的版本管理系統(tǒng)例如為IBM 公司的teamstudio for Domino App。
為了高質(zhì)量地開(kāi)發(fā)復(fù)雜的軟件方案,需要由不同角色的開(kāi)發(fā)人員就一 個(gè)項(xiàng)目展開(kāi)協(xié)作,并且使他們能夠使用最合適的集成開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)項(xiàng)目 中的相應(yīng)元素。于是很容易出現(xiàn)這樣的情形,即不同的開(kāi)發(fā)人員分別使用 基于文件和基于節(jié)點(diǎn)的版本管理系統(tǒng)來(lái)管理其項(xiàng)目,而這些項(xiàng)目具有共同 開(kāi)發(fā)的公共元素。在這種情況下,需要在這些版本管理系統(tǒng)間對(duì)公共元素進(jìn)行同步。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是提供一種版本管理系統(tǒng)、版本管理方法、同步控 制設(shè)備、同步控制方法和同步系統(tǒng),其能夠利于進(jìn)行不同版本管理系統(tǒng)間 公共元素的同步。
在本發(fā)明的一個(gè)實(shí)施例中,用于管理項(xiàng)目的元素的版本的版本管理系
統(tǒng)包含版本管理控制器,;陂配置為響應(yīng)用于更新本地項(xiàng)目中的本地元素 的提交請(qǐng)求,處理本地元素的內(nèi)容和版本的更新;第一同步裝置,被配置 為接收并向版本管理控制器轉(zhuǎn)發(fā)提交請(qǐng)求,響應(yīng)于版本管理控制器處理提 交請(qǐng)求,獲得本地元素的當(dāng)前版本和內(nèi)容,并且向一個(gè)外部設(shè)備傳送關(guān)于 版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的第一通知,以及所述當(dāng)前 版本和內(nèi)容;第二同步裝置,被配置為響應(yīng)于從外部設(shè)備接收到用于更新 本地項(xiàng)目的本地元素的第二通知和所述本地元素的內(nèi)容,生成用于對(duì)本地 元素進(jìn)行相應(yīng)更新的提交請(qǐng)求并提供給版本管理控制器,并且響應(yīng)于版本 管理控制器處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本,并向外部設(shè)備輸出 當(dāng)前版本。
在本發(fā)明的一個(gè)實(shí)施例中,同步控制設(shè)備包含映射處理裝置,被配 置為從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生 更新的第 一通知和本地元素的當(dāng)前版本;確定在所存儲(chǔ)的指示包括不同類(lèi) 型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元 素內(nèi)容相同的映射關(guān)系中,是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地 元素的映射關(guān)系;和響應(yīng)于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的 本地元素的版本是否相同;和同步裝置,被配置為從版本管理系統(tǒng)接收 本地元素的內(nèi)容;和響應(yīng)于確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本 地元素的版本不相同,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本 地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向 每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新本地元素的第二通知和本地元素的 內(nèi)容,其中所述映射處理裝置進(jìn)一步被配置為從每個(gè)其它版本管理系統(tǒng) 接收本地元素的當(dāng)前版本;和用當(dāng)前版本更新所存儲(chǔ)的本地元素的版本。
在本發(fā)明的一個(gè)實(shí)施例中,版本管理系統(tǒng)中管理項(xiàng)目的 素的版本的 方法包含接收用于更新本地項(xiàng)目中的本地元素的提交請(qǐng)求;根據(jù)提交請(qǐng)求處理本地元素的內(nèi)容和版本的更新;響應(yīng)于處理更新,獲得本地元素的 當(dāng)前版本和內(nèi)容,并且向外部設(shè)M送關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本 地元素發(fā)生更新的第一通知,以及當(dāng)前版本和內(nèi)容;和響應(yīng)于從外部設(shè)備 接收到用于更新本地項(xiàng)目的本地元素的第二通知和本地元素的內(nèi)容,生成 用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求,根據(jù)生成的提交請(qǐng)求處理本地 元素的內(nèi)容和版本的更新,并且響應(yīng)于處理更新,獲得本地元素的當(dāng)前版 本,并向外部設(shè)備輸出當(dāng)前版本。
在本發(fā)明的一個(gè)實(shí)施例中,同步控制方法包含從版本管理系統(tǒng)接收 關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的第一通知、本地元素 的內(nèi)容和當(dāng)前版本,確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的 集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)容相同的映射關(guān) 系中,是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系,并 且響應(yīng)于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本是 否相同;和響應(yīng)于確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本地元素的 版本不相同,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的
本地元素,才艮據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它 版本管理系統(tǒng)發(fā)送用于更新本地元素的第二通知和本地元素的內(nèi)容,從每 個(gè)其它版本管理系統(tǒng)接收本地元素的當(dāng)前版本,并且用當(dāng)前版本更新所存 儲(chǔ)的本地元素的版本。
在本發(fā)明的一個(gè)實(shí)施例中,同步系統(tǒng)包含至少兩個(gè)如上所述的版本 管理系統(tǒng);和至少一個(gè)如上所述的同步控制i殳備,其中,所述至少兩個(gè)版 本管理系統(tǒng)的所述至少 一個(gè)外部i殳備為所述至少 一個(gè)同步控制i殳備。
根據(jù)本發(fā)明的實(shí)施例,對(duì)于不同類(lèi)型的版本管理系統(tǒng)所管理的項(xiàng)目中 的乂>共元素,能夠自動(dòng)地將一個(gè)版本管理系統(tǒng)中對(duì)公共元素的更新同步到 其它版本管理系統(tǒng)中。
參照下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例的說(shuō)明,會(huì)更加容易地理解本發(fā)明 的以上和其它目的、特點(diǎn)和優(yōu)點(diǎn)。在附圖中,相同的或?qū)?yīng)的4支術(shù)特征或 部件將釆用相同或?qū)?yīng)的附圖標(biāo)記來(lái)表示。
圖l是根據(jù)本發(fā)明一個(gè)實(shí)施例的版本管理系統(tǒng)的框圖。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的同步控制設(shè)備的框3是說(shuō)明圖1所示的版本管理系統(tǒng)中的版本管理方法的流程圖。
圖4是說(shuō)明圖2所示的同步控制設(shè)備中的同步控制方法的流程圖。
圖5是示出所存儲(chǔ)的映射關(guān)系的邏輯結(jié)構(gòu)示例的框圖。
圖6A和6B示出了表示映射關(guān)系的XML文件的例子。
圖7是說(shuō)明根據(jù)本發(fā)明另一實(shí)施例的版本管理系統(tǒng)中的版本管理方 法的流程圖。
圖8是說(shuō)明根據(jù)本發(fā)明另一實(shí)施例的同步控制設(shè)備中的同步控制方 法的流程圖。
圖9是根據(jù)本發(fā)明一個(gè)實(shí)施例的同步系統(tǒng)的框圖。
圖IO是示出其中實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)的示例性結(jié)構(gòu)的框圖。
具體實(shí)施例方式
下面參照附圖來(lái)^L明本發(fā)明的實(shí)施例。應(yīng)當(dāng)注意,為了清楚的目的, 附圖和說(shuō)明中省略了與本發(fā)明無(wú)關(guān)的、本領(lǐng)域普通技術(shù)人員已知的部件和 處理的表示和描述。
圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的版本管理系統(tǒng)100的框圖。
如圖1所示,版本管理系統(tǒng)100包含版本管理控制器101、第一同步 裝置103和第二同步裝置104。
用戶可^1戶端(未示出)向版本管理系統(tǒng)100發(fā)出用于更新版本管理 系統(tǒng)100所管理的項(xiàng)目(即,本地項(xiàng)目)中的元素(即,本地元素)的提交請(qǐng) 求。第一同步裝置103接收并向版本管理控制器101轉(zhuǎn)發(fā)提交請(qǐng)求。版本 管理控制器101可與已有版本管理系統(tǒng)的版本管理控制器相同,其響應(yīng)提 交請(qǐng)求而處理提交請(qǐng)求所涉及的本地元素的內(nèi)容和版本的更新。
這里,版本管理系統(tǒng)100中發(fā)生本地元素的更新,而這個(gè)本地元素有 可能在其它版本管理系統(tǒng)(未示出)中有相應(yīng)的元素(即,其它版本管理系統(tǒng) 的本地元素),因此可能需要將版本管理系統(tǒng)100發(fā)生的更新同步到其它 版本管理系統(tǒng)。因此,響應(yīng)于版本管理控制器101處理提交請(qǐng)求,第一同 步裝置103可與圖2所示的同步控制設(shè)備200(后面會(huì)加以說(shuō)明)進(jìn)行交互。
可根據(jù)提交請(qǐng)求中包含的操作類(lèi)型信息來(lái)確定是否用于更新的提交 請(qǐng)求。在這種情況下,需要對(duì)提交請(qǐng)求進(jìn)行解析。也可以通過(guò)比較版本管理控制器101處理提交請(qǐng)求前后元素的版本來(lái)確定是否用于更新的提交請(qǐng)求。
第 一同步裝置103從版本管理系統(tǒng)100獲得所更新的本地元素的當(dāng)前 版本和本地元素的內(nèi)容。優(yōu)選地,由于不同版本管理系統(tǒng)間的元素存在差 異,例如元素是基于文件還是基于節(jié)點(diǎn)的形式差異,在進(jìn)行同步時(shí)相互傳 送統(tǒng)一形式的元素內(nèi)容,可it免一個(gè)版本管理系統(tǒng)需要了解其它版本管理 系統(tǒng)的元素內(nèi)容的形式的問(wèn)題。統(tǒng)一的形式可以是例如文本文件、XML 文件等等,只要能夠方便處理。在獲得的本地元素的內(nèi)容不具有統(tǒng)一形式 的情況下,第一同步裝置103可將其轉(zhuǎn)換為統(tǒng)一形式。在版本管理系統(tǒng)提
供的元素內(nèi)容的形式和統(tǒng)一形式的規(guī)范已知的情況下,這種轉(zhuǎn)換以;M目反
方向的轉(zhuǎn)換是本領(lǐng)域普通技術(shù)人員能夠?qū)崿F(xiàn)的。為同步更新,第一同步裝
置103向同步控制設(shè)備200傳送關(guān)于版本管理系統(tǒng)100中本地項(xiàng)目的本地 元素發(fā)生更新的通知,以及所獲得的當(dāng)前版本和內(nèi)容。
如上所述,第一同步裝置103負(fù)責(zé)觸發(fā)同步控制設(shè)備200,而有關(guān)是 否將更新同步到其它版本管理系統(tǒng)、將更新同步到何版本管理系統(tǒng)的何項(xiàng) 目中的何元素的確定,以及具體的同步控制,則由同步控制設(shè)備200來(lái)負(fù) 責(zé)。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的同步控制設(shè)備200的框圖。
如圖2所示,同步控制設(shè)備200包含映射處理裝置202和同步裝置
203。
如前所述,當(dāng)一個(gè)版本管理系統(tǒng)通過(guò)第一同步裝置將其中本地元素的 更新通知到同步控制設(shè)備200時(shí),同步控制設(shè)備200需要確定是否需要將 更新同步到其它版本管理系統(tǒng)、將更新同步到何版本管理系統(tǒng)的何項(xiàng)目中 的何元素。
對(duì)于包含若干不同類(lèi)型的版本管理系統(tǒng)的集合,如果該集合的一個(gè)子 集(包含至少兩個(gè)版本管理系統(tǒng))的所有版本管理系統(tǒng)所管理的本地項(xiàng)目 存在公共元素(即內(nèi)斜目同的元素),則認(rèn)為該子集的每個(gè)版本管理系統(tǒng)的 該本地項(xiàng)目的該公共元素間存在映射關(guān)系。能夠明白,這樣的子集可以不 止一個(gè),因而這樣的映射關(guān)系可以不止一個(gè)。
可以預(yù)先存儲(chǔ)這樣的映射關(guān)系,以指示這樣的集合中至少兩個(gè)版本管 理系統(tǒng)的每個(gè)的本地項(xiàng)目的本地元素內(nèi)斜目同。圖5是示出存儲(chǔ)的映射關(guān) 系的邏輯結(jié)構(gòu)示例的框圖。如圖5所示,映射關(guān)系500包含單元1至單元N,每個(gè)單元代表子集中的一個(gè)版本管理系統(tǒng)所管理的本地項(xiàng)目的公共元素。單元的數(shù)目取決于子集中版本管理系統(tǒng)的數(shù)目。每個(gè)單元包含版本管理系統(tǒng)的標(biāo)識(shí)SID 501、項(xiàng)目的標(biāo)識(shí)PID 502和元素的標(biāo)識(shí)EID 503。應(yīng)當(dāng)明白,圖5所示的邏輯結(jié)構(gòu)只是一個(gè)例子,可以釆用其它形式來(lái)表示映射關(guān)系,例如^、數(shù)據(jù)庫(kù)關(guān)系表、文本文件、XML文件等等。
例如圖6A和6B示出了表示映射關(guān)系的XML文件的例子。圖6A示出的XML文件定義了版本管理系統(tǒng)的項(xiàng)目之間的映射,其中節(jié)點(diǎn)<ProjectUUIDinBridge>定義項(xiàng)目映射編號(hào),<InTypeAServer>和〈InTypeBServer〉一方面標(biāo)識(shí)不同的版本管理系統(tǒng),另 一方面是定義具體項(xiàng)目的節(jié)點(diǎn)。節(jié)點(diǎn)<ProjectUUID>定義項(xiàng)目的系統(tǒng)標(biāo)識(shí),節(jié)點(diǎn)〈ProjectName〉定義項(xiàng)目的外部名,節(jié)點(diǎn)〈ProjectPath〉定義項(xiàng)目的路徑。圖6B示出的XML文件定義了版本管理系統(tǒng)的元素之間的映射,其中節(jié)點(diǎn)<ProjectUUIDinBridge>定義項(xiàng)目映射編號(hào),節(jié)點(diǎn)〈SynchronizedElement〉定義該項(xiàng)目映射編號(hào)對(duì)應(yīng)的項(xiàng)目映射下各版本管
理系統(tǒng)的元素間的映射,其中節(jié)點(diǎn)<五16111611 ;111011181^(^6>用于標(biāo)識(shí)元素
間的映射,節(jié)點(diǎn)〈Locked〉標(biāo)識(shí)元素間映射的加鎖狀態(tài),<InTypeAServer>和〈InTypeBServer〉一方面標(biāo)識(shí)不同的版本管理系統(tǒng),另 一方面是定義具體元素的節(jié)點(diǎn)?!碋lementUUID〉定義元素的系統(tǒng)標(biāo)識(shí),<ElementName>定義元素的外部名,〈ElementPath〉定義元素的路徑,<ElementVersion>定義元素的版本。圖6A和6B的XML文件共同定義了映射關(guān)系。
再次參照?qǐng)D2,還可預(yù)先存儲(chǔ)每個(gè)映射關(guān)系所涉及的每個(gè)本地元素的版本,即最近的版本,例如圖 6B 中<ElementVersion>的值"Vers20080305-2"。與映射關(guān)系類(lèi)似,可以通過(guò)各種形式存儲(chǔ)版本并使之與相應(yīng)元素關(guān)聯(lián)。在初始建立映射關(guān)系的情況下,可以將版本設(shè)為正常版本值域之外的值,或是元素在各自版本管理系統(tǒng)的實(shí)際版本。此外,還可存儲(chǔ)每個(gè)映射關(guān)系所涉及的每個(gè)版本管理系統(tǒng)的訪問(wèn)信息,例如版本管理系統(tǒng)的尋址信息、訪問(wèn)版本管理系統(tǒng)所需的鑒權(quán)信息等等。類(lèi)似地,可以通過(guò)各種形式存儲(chǔ)訪問(wèn)信息并使之與相應(yīng)版本管理系統(tǒng)關(guān)聯(lián)。
映射處理裝置202從版本管理系統(tǒng)接收如前所述由第一同步裝置103發(fā)出的通知。映射處理裝置202還從第一同步裝置103接收通知所涉及的本地元素的當(dāng)前版本。根據(jù)接收的通知,映射處理裝置202確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)斜目同的映射關(guān)系中,是否存在涉及該通知所指示的版本管理系統(tǒng)所管理的本地項(xiàng)目的本地元素的映射關(guān)系,例如對(duì)于圖5所示的映射關(guān)系,如果其中的 一個(gè)單元包含通知所指示的版本管理系統(tǒng)、本地項(xiàng)目和本地元素,則該映射關(guān)系即為所要確定存在的映射關(guān)系。在確定存在這樣的映射關(guān)系的情況下,映射處理裝置202進(jìn)一步確定通知所指示的本地元素的當(dāng)前版本與所存儲(chǔ)的該本地元素的版本是否相同。
同步裝置203接收上述版本管理系統(tǒng)通過(guò)第 一 同步裝置103發(fā)送的本地元素的內(nèi)容。在映射處理裝置202確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同的情況下,對(duì)于映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,例如圖5所示的映射關(guān)系中除包含通知所指示的版本管理系統(tǒng)、本地項(xiàng)目和本地元素的單元之外的每個(gè)其它
單元所指示的版本管理系統(tǒng)、本地項(xiàng)目和本地元素,同步裝置203獲得所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,根據(jù)訪問(wèn)信息向每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新該版本管理系統(tǒng)的本地項(xiàng)目的本地元素的通知,還發(fā)送接收自第 一 同步裝置103的內(nèi)容。
再次參照?qǐng)D1,在版本管理系統(tǒng)100作為如前所述的每個(gè)其它版本管理系統(tǒng)的情況下,第二同步裝置104接收如前所述由同步裝置203發(fā)送的通知。第二同步裝置104還接收如前所述由同步裝置203發(fā)送的本地元素的內(nèi)容。第二同步裝置104按照版本管理系統(tǒng)100的提交規(guī)范生成用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求并提供給版本管理控制器101。例如,為滿足內(nèi)容形式要求,第二同步裝置104將本地元素的內(nèi)^例如統(tǒng)一形式或其它形式轉(zhuǎn)換為本地形式。第二同步裝置104還響應(yīng)于版本管理控制器101處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本,并且向同步控制設(shè)備200返回所獲得的當(dāng)前版本。
再次參照?qǐng)D2,相應(yīng)地,映射處理裝置202從第二同步裝置104接收如前所述的當(dāng)前版本,并且用當(dāng)前版本更新所存儲(chǔ)的相應(yīng)本地元素的版本。
圖3是說(shuō)明圖1所示的版本管理系統(tǒng)100中的版本管理方法的流程圖。
如圖3所示,方法在步驟301開(kāi)始。在步驟302,第一同步裝置103接收用于更新本地項(xiàng)目中的本地元素的提交請(qǐng)求。在步驟303,版本管理控制器101根據(jù)提交請(qǐng)求處理所述本地元素的內(nèi)容和版本的更新。接著在步驟304,第一同步裝置103向同步控制設(shè)備200傳送關(guān)于版本管理系統(tǒng)100中本地項(xiàng)目的本地元素發(fā)生更新的通知。在步驟306,第一同步裝置獲得本地元素的當(dāng)前版本和內(nèi)容,并且向同步控制設(shè)備200傳送當(dāng)前版本和內(nèi)容。接著方法在步驟314結(jié)束。
在另一情況下,方法在步驟301開(kāi)始。在步驟307,第二同步裝置104從同步控制設(shè)備200接收用于更新本地項(xiàng)目的本地元素的通知。在步驟309,第二同步裝置104接收本地元素的內(nèi)容。接著在步驟310,第二同步裝置104生成用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求。在步驟311,版本管理控制器101根據(jù)生成的提交請(qǐng)求處理本地元素的內(nèi)容和版本的更新。在步驟313,第二同步裝置104獲得本地元素的當(dāng)前版本,并向同步控制設(shè)備200傳送當(dāng)前版本。方法在步驟314結(jié)束。
圖4是說(shuō)明圖2所示的同步控制設(shè)備200中的同步控制方法的流程圖。
對(duì)于圖4所示的例子,假設(shè)對(duì)于包括不同類(lèi)型的版本管理系統(tǒng)的集合,預(yù)先存儲(chǔ)有用于指示所述集合中至少兩個(gè)版本管理系統(tǒng)的每個(gè)的本地項(xiàng)目的本地元素內(nèi)斜目同的映射關(guān)系,以及映射關(guān)系所涉及的每個(gè)本地元素的版本和映射關(guān)系所涉及的每個(gè)版本管理系統(tǒng)的訪問(wèn)信息。當(dāng)然,如果沒(méi)有存儲(chǔ)上述內(nèi)容,可以在方法開(kāi)始時(shí)進(jìn)行存儲(chǔ)。如圖4所示,方法在步驟401開(kāi)始。在步驟403,映射處理裝置202從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的通知。在步驟405,映射處理裝置202和同步裝置203分別接收本地元素的當(dāng)前版本和本地元素的內(nèi)容。在步驟406,映射處理裝置202確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)斜目同的映射關(guān)系中,是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系,并且響應(yīng)于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同。在步驟407,映射處理裝置202響應(yīng)于確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同,針對(duì)該映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新本地元素的通知。在步驟409,同步裝置203向每個(gè)其它版本管理系統(tǒng)發(fā)送本地元素的內(nèi)容。在步驟410,映射處理裝置202從每個(gè)其它版本管理系統(tǒng)接收本地元素的當(dāng)前版本,并且用當(dāng)前版本更新所存儲(chǔ)的本地元素的版本。接著方法在步驟413結(jié)束。
在前面參照?qǐng)D1描述的實(shí)施例中,第一同步裝置103在未確定是否需要同步的情況下獲得和向同步控制設(shè)備200傳送內(nèi)容。事實(shí)上,某些本地元素可能并未參與映射關(guān)系,因而導(dǎo)致版本管理系統(tǒng)100和同步控制i殳備200的部分處理能力被浪費(fèi)在內(nèi)容的處理上。
在進(jìn)一步的實(shí)施例中,第一同步裝置103可以先向同步控制設(shè)備200傳送如前所述的通知和當(dāng)前版本。映射處理裝置202可以根據(jù)當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同,向版本管理系統(tǒng)100發(fā)送通知,以指示是否需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素。第一同步裝置103可以接收該通知,并且在該通知指示需要進(jìn)行同步的情況下,才進(jìn)行內(nèi)容的獲得和傳送。相應(yīng)地,同步裝置201僅在該通知指示需要進(jìn)行同步的情況下,才進(jìn)行內(nèi)容的接收。這樣,由于只在必要的情況下才進(jìn)行內(nèi)容的處理,因而避免處理能力的浪費(fèi)。然而,本實(shí)施例可能出現(xiàn)發(fā)生更新的本地元素并未參與任何映射關(guān)系但仍然獲得和傳送當(dāng)前版本的情況。這同樣會(huì)導(dǎo)致處理能力的浪費(fèi)。
在進(jìn)一步的實(shí)施例中,第一同步裝置103可以在進(jìn)行提交請(qǐng)求的轉(zhuǎn)發(fā)之前傳送如前所述的通知。映射處理裝置202可以在接收通知之后,在確定存在如前所述的映射關(guān)系的情況下,向版本管理系統(tǒng)100發(fā)送通知,以指示可能需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素。第一同步裝置103在接收到該通知的情況下,才進(jìn)行提交請(qǐng)求的轉(zhuǎn)發(fā)、當(dāng)前版本的獲得和傳送,以及內(nèi)容的獲得和傳送。相應(yīng)地,映射處理裝置202僅在發(fā)送該通知的情況下,才進(jìn)行當(dāng)前版本的接收。因此,能夠進(jìn)一步避免處理能力的浪費(fèi)。
在圖1所示實(shí)施例的進(jìn)一步實(shí)施例中,第一同步裝置103可以接收并向版本管理控制器101轉(zhuǎn)發(fā)用于刪除項(xiàng)目中元素的提交請(qǐng)求??筛鶕?jù)提交請(qǐng)求中包含的操作類(lèi)型信息來(lái)確定是否用于刪除元素的提交請(qǐng)求。也可以通過(guò)在版本管理控制器101處理提交請(qǐng)求之后查詢(xún)?cè)厥欠翊嬖趤?lái)確定是否用于刪除的提交請(qǐng)求。在用于刪除的提交請(qǐng)求的情況下,第一同步裝置103只需要向同步控制設(shè)備200傳送關(guān)于版本管理系統(tǒng)100中本地項(xiàng)目的本地元素發(fā)生刪除的通知。
相應(yīng)地,在圖2所示實(shí)施例的進(jìn)一步實(shí)施例中,映射處理裝置202從版本管理系統(tǒng)接收由第一同步裝置103發(fā)出的有關(guān)發(fā)生刪除的通知。映射處理裝置202確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)容相同的映射關(guān)系中,是否存在涉及該通知所指示的版本管理系統(tǒng)所管理的本地項(xiàng)目的本地元素的映射關(guān)系。在確定存在這樣的映射關(guān)系的情況下,對(duì)于映射關(guān)系所
涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,同步裝置203獲得所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,根據(jù)訪問(wèn)信息向每個(gè)其它版本管理系統(tǒng)發(fā)送用于刪除該版本管理系統(tǒng)的本地項(xiàng)目的本地元素的通知。
回到上述圖1所示實(shí)施例的進(jìn)一步實(shí)施例,第二同步裝置104接收由同步裝置203發(fā)送的用于刪除的通知。根據(jù)該通知,第二同步裝置104按照版本管理系統(tǒng)100的提交規(guī)范生成用于對(duì)本地元素進(jìn)行刪除的提交請(qǐng)求并提供給版本管理控制器101。
回到上述圖2所示實(shí)施例的進(jìn)一步實(shí)施例,相應(yīng)地,映射處理裝置202刪除所確定存在的映射關(guān)系,例如圖5所示的映射關(guān)系,映射關(guān)系所涉及的每個(gè)本地元素(例如圖5所示的映射關(guān)系中的每個(gè)單元所指示的本地元素)的版本,和其它映射關(guān)系未涉及的版本管理系統(tǒng)的訪問(wèn)信息。
圖7是說(shuō)明根據(jù)上述圖l所示實(shí)施例的進(jìn)一步實(shí)施例的版本管理系統(tǒng)100中的版本管理方法的流程圖。
如圖7所示,方法在步驟701開(kāi)始。在步驟702,第一同步裝置103接收用于更新或刪除本地項(xiàng)目中的本地元素的提交請(qǐng)求。在步驟703,版本管理控制器101根據(jù)提交請(qǐng)求處理所述本地元素的內(nèi)容和版本的更新或刪除。接著在步驟704,第一同步裝置103向同步控制設(shè)備200傳送關(guān)于版本管理系統(tǒng)100中本地項(xiàng)目的本地元素發(fā)生更新或刪除的通知。在步驟705確定是否刪除。如果是,則方法在步驟714結(jié)束。如果不是,則在步驟706,第一同步裝置獲得本地元素的當(dāng)前版本和內(nèi)容,并且向同步控制設(shè)備200傳送當(dāng)前版本和內(nèi)容。接著方法在步驟714結(jié)束。
在另一情況下,方法在步驟701開(kāi)始。在步驟707,第二同步裝置104
著確定是否刪除。如果不是,則在步驟709,第二同步裝置104接收本地元素的內(nèi)容。接著在步驟710,第二同步裝置104生成用于對(duì)本地元素進(jìn)行相應(yīng)更新或刪除的提交請(qǐng)求。在步驟711,版本管理控制器101根據(jù)生成的提交請(qǐng)求處理本地元素的內(nèi)容和版本的更新或刪除。如果在步驟708確定是刪除,則轉(zhuǎn)到步驟710。在步驟711后,在步驟712確定是否刪除。如果不是,則在步驟713,第二同步裝置104獲得本地元素的當(dāng)前版本,并向同步控制設(shè)備200傳送當(dāng)前版本。接著,或者在步驟712確定是刪除,則方法在步驟714結(jié)束。圖8是說(shuō)明根據(jù)上述圖2所示實(shí)施例的進(jìn)一步實(shí)施例的同步控制i殳備 200中的同步控制方法的流程圖。
對(duì)于圖8所示的例子,假設(shè)對(duì)于包括不同類(lèi)型的版本管理系統(tǒng)的集 合,預(yù)先存儲(chǔ)有用于指示所述集合中至少兩個(gè)版本管理系統(tǒng)的每個(gè)的本地 項(xiàng)目的本地元素內(nèi)斜目同的映射關(guān)系,以及映射關(guān)系所涉及的每個(gè)^元 素的版本和映射關(guān)系所涉及的每個(gè)版本管理系統(tǒng)的訪問(wèn)信息。當(dāng)然,如果 沒(méi)有存儲(chǔ)上述內(nèi)容,可以在方法開(kāi)始時(shí)進(jìn)行存儲(chǔ)。如圖8所示,方法在步 驟801開(kāi)始。在步驟803,映射處理裝置202從版本管理系統(tǒng)接收關(guān)于版 本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新或刪除的通知。在步驟804, 確定是否刪除。如果不是,則在步驟805,映射處理裝置202和同步裝置 203分別接收本地元素的當(dāng)前版本和本地元素的內(nèi)容。在步驟806,映射 處理裝置202確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合 中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)容相同的映射關(guān)系中, 是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系,并且響應(yīng) 于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相 同。如果在步驟804確定是刪除,則轉(zhuǎn)到步驟806。在步驟807,映射處 理裝置202響應(yīng)于確定存在映射關(guān)系(在刪除的情況下),或者確定當(dāng)前版 本與所存儲(chǔ)的本地元素的版本不相同(在更新的情況下),針對(duì)該映射關(guān)系 所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每 個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新 或刪除本地元素的通知。接著在步驟808確定是否刪除。如果不是,則在 步驟809,同步裝置203向每個(gè)其它版本管理系統(tǒng)發(fā)送本地元素的內(nèi)容。 在步驟810,映射處理裝置202從每個(gè)其它版本管理系統(tǒng)接收本地元素的 當(dāng)前版本,并且用當(dāng)前版本更新所存儲(chǔ)的本地元素的版本。接著方法在步 驟813結(jié)束。如果在步驟808確定是刪除,則在步驟812,映射處理裝置 202刪除確定存在的映射關(guān)系,和該映射關(guān)系所涉及的每個(gè)本地元素的版 本,和其它映射關(guān)系未涉及的版本管理系統(tǒng)的訪問(wèn)信息。接著方法在步驟 813結(jié)束。
在前面描述的實(shí)施例中,第一同步裝置103在未確定是否需要同步的 情況下獲得和向同步控制設(shè)備200傳送內(nèi)容。事實(shí)上,某些本地元素可能 并未參與映射關(guān)系,因而導(dǎo)致版本管理系統(tǒng)100和同步控制設(shè)備200的部 分處理能力被浪費(fèi)在內(nèi)容的處理上。
在進(jìn)一步的實(shí)施例中,第一同步裝置103可以在更新的情況下先向同步控制設(shè)備200傳送如前所述的通知和當(dāng)前版本。映射處理裝置202可以 在刪除的情況下才艮據(jù)是否存在如前所述的映射關(guān)系,或者在更新的情況下 根據(jù)當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同,向版本管理系統(tǒng)100 發(fā)送通知,以指示是否需要將本地元素的更新或刪除同步到映射關(guān)系所涉 及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素。第一同步裝置103 可以接收該通知,并且在更新且該通知指示需要進(jìn)行同步的情況下,才進(jìn) 行內(nèi)容的獲得和傳送。相應(yīng)地,同步裝置201僅在更新且該通知指示需要 進(jìn)行同步的情況下,才進(jìn)行內(nèi)容的接收。這樣,由于只在必要的情況下才 進(jìn)行內(nèi)容的處理,因而避免處理能力的浪費(fèi)。然而,本實(shí)施例可能出現(xiàn)發(fā)
情況。這同樣會(huì)導(dǎo)致處理能力的浪費(fèi)。
在進(jìn)一步的實(shí)施例中,在更新的情況下,第一同步裝置103可以在進(jìn) 行提交請(qǐng)求的轉(zhuǎn)發(fā)之前傳送如前所述的通知。映射處理裝置202可以在接 收通知之后,在確定存在映射關(guān)系的情況下,向版本管理系統(tǒng)100發(fā)送通 知,以指示可能需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它 版本管理系統(tǒng)的本地項(xiàng)目中的本地元素。第一同步裝置103在接收到該通 知的情況下,才進(jìn)行提交請(qǐng)求的轉(zhuǎn)發(fā)、當(dāng)前版本的獲得和傳送,以及內(nèi)容 的獲得和傳送。相應(yīng)地,映射處理裝置202僅在發(fā)送該通知的情況下,才 進(jìn)行當(dāng)前版本的接收。因此,能夠進(jìn)一步避免處理能力的浪費(fèi)。
前面描述的版本管理系統(tǒng)和同步控制設(shè)備可組成同步系統(tǒng)。圖9是根 據(jù)本發(fā)明一個(gè)實(shí)施例的同步系統(tǒng)卯O的框圖。如圖9所示,同步系統(tǒng)卯O 包含與前面描述的版本管理系統(tǒng)100相同的版本管理系統(tǒng)卯l和902,和 與前面描述的同步控制設(shè)備200相同的同步控制設(shè)備卯3。版本管理系統(tǒng) 卯l和卯2與同步控制i殳備卯3進(jìn)4亍如前所述的交互。
如前所述,同步系統(tǒng)中的同步控制i殳備所管理的版本管理系統(tǒng)可以有 不止兩個(gè)。此外,同步控制設(shè)備可以有不止一個(gè)。在存在多個(gè)同步控制設(shè) 備的情況下,所有的映射關(guān)系可以由不同的同步控制設(shè)備來(lái)管理。相應(yīng)地, 版本管理系統(tǒng)還包含存儲(chǔ)器(未予示出),用于存儲(chǔ)本地元素所參與的映 射關(guān)系所屬的同步控制設(shè)備的關(guān)聯(lián)關(guān)系,即本地項(xiàng)目及本地項(xiàng)目中的本地 元素與同步控制設(shè)備的關(guān)聯(lián)關(guān)系,以及用于訪問(wèn)所關(guān)聯(lián)的同步控制設(shè)備的 訪問(wèn)信息,例如尋址信息等等。版本管理系統(tǒng)的第一同步裝置可根據(jù)所接行如前所述的交互。當(dāng)然,存儲(chǔ)器也可位于版本管理系統(tǒng)之外,只要能夠 被第一同步裝置訪問(wèn)到。
在這樣的同步系統(tǒng)中,如果發(fā)生兩個(gè)或更多版本管理系統(tǒng)對(duì)參與同一 映射關(guān)系的本地元素的同時(shí)更新的情況下,可能^it成不一致性的問(wèn)題。
在進(jìn)一步的實(shí)施例中,同步控制設(shè)備的映射處理裝置可以當(dāng)在刪除的 情況下確定存在映射關(guān)系時(shí),或者當(dāng)在更新的情況下確定當(dāng)前版本與所存 儲(chǔ)的本地元素的版本不相同時(shí),在映射關(guān)系未加鎖的情況下對(duì)其加鎖,并 且在映射關(guān)系已經(jīng)加鎖的情況下向發(fā)起同步的版本管理系統(tǒng)傳送包括指 示由于加鎖失敗而不需要進(jìn)行同步的信息的通知,以作為前述指示可能需 要將本地元素的更新同步到其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素 的通知。相應(yīng)地,版本管理系統(tǒng)的第一同步裝置可響應(yīng)于該通知而終止提 交請(qǐng)求的處理。在對(duì)映射關(guān)系加鎖的情況下,映射處理裝置可響應(yīng)于用從
下)??刹捎酶鞣N已知的鎖技術(shù)來(lái)實(shí)現(xiàn)映射關(guān)系的加鎖和解鎖,例如標(biāo)志 位,信號(hào)燈等等。
根據(jù)本發(fā)明的實(shí)施例,只需要在已有版本管理系統(tǒng)上增加第一和第二 同步裝置便能夠?qū)嵤┮粋€(gè)新的同步系統(tǒng),因此能夠方便地利用版本管理系 統(tǒng)原有的版本管理控制器和其它模塊的設(shè)計(jì),從而縮短開(kāi)發(fā)周期、降低開(kāi) 發(fā)和部署成本。
本發(fā)明的系統(tǒng)、設(shè)備、裝置和方法的實(shí)現(xiàn)環(huán)境如圖IO所示。
在圖10中,中央處理單元(CPU)1001根據(jù)只讀映射數(shù)據(jù)(ROM)1002 中存儲(chǔ)的程序或從存儲(chǔ)部分1008加載到隨M取映射數(shù)據(jù)(RAM)1003的 程序執(zhí)行各種處理。在RAM 1003中,也才艮據(jù)需要存儲(chǔ)當(dāng)CPU 1001執(zhí)行 各種處理等等時(shí)所需的數(shù)據(jù)。
CPU 1001、 ROM 1002和RAM 1003經(jīng)由總線1004彼此連接。輸入 /輸出接口 1005也連接到總線1004。
下述部件連接到輸^V/輸出接口 1005:輸入部分1006,包括Mit、鼠 標(biāo)等等;輸出部分1007,包括顯示器,比如陰極射線管(CRT)、液晶顯示 器(LCD)等等,和揚(yáng)聲器等等;存儲(chǔ)部分1008,包括硬盤(pán)等等;和通信部 分1009,包括網(wǎng)洛接口卡比如LAN卡、調(diào)制解調(diào)器等等。通信部分1009 經(jīng)由網(wǎng)絡(luò)比如因特網(wǎng)執(zhí)行通信處理。
根據(jù)需要,驅(qū)動(dòng)器1010也連接到輸A/輸出接口 1005??刹鹦督橘|(zhì)1011比如磁盤(pán)、光盤(pán)、磁光盤(pán)、半導(dǎo)體映射數(shù)據(jù)等等根據(jù)需要被安裝在 驅(qū)動(dòng)器1010上,使得從中讀出的計(jì)算機(jī)程序根據(jù)需要被安裝到存儲(chǔ)部分 1008中。
在通過(guò)軟件實(shí)現(xiàn)上述步驟和處理的情況下,從網(wǎng)絡(luò)比如因特網(wǎng)或存儲(chǔ)
介質(zhì)比如可拆卸^h質(zhì)ioii安裝構(gòu)成軟件的程序。
本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這種存儲(chǔ)介質(zhì)不局限于圖io所示的其 中存儲(chǔ)有程序、與設(shè)備相分離地分發(fā)以向用戶提供程序的可拆卸介質(zhì)
1011??刹鹦督橘|(zhì)1011的例子包含磁盤(pán)、光盤(pán)(包含光盤(pán)只讀映射數(shù)據(jù) (CD-ROM)和數(shù)字通用盤(pán)(DVD))、磁光盤(pán)(包含迷你盤(pán)(MD)和半導(dǎo)體映 射數(shù)據(jù)?;蛘撸鎯?chǔ)介質(zhì)可以是ROM 1002、存儲(chǔ)部分1008中包含的硬 盤(pán)等等,其中存有程序,并且與包含它們的設(shè)備一起被分發(fā)給用戶。
在前面的說(shuō)明書(shū)中參照特定實(shí)施例描述了本發(fā)明。然而本領(lǐng)域的 普通技術(shù)人員理解,在不偏離如權(quán)利要求書(shū)限定的本發(fā)明的范圍的前 提下可以進(jìn)行各種修改和改變。
2權(quán)利要求
1.一種版本管理系統(tǒng),用于管理項(xiàng)目的元素的版本,包括版本管理控制器,被配置為響應(yīng)用于更新本地項(xiàng)目中的本地元素的提交請(qǐng)求,處理本地元素的內(nèi)容和版本的更新;第一同步裝置,被配置為接收并向版本管理控制器轉(zhuǎn)發(fā)提交請(qǐng)求,響應(yīng)于版本管理控制器處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本和內(nèi)容,并且向一個(gè)外部設(shè)備傳送關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的第一通知,以及所述當(dāng)前版本和內(nèi)容;第二同步裝置,被配置為響應(yīng)于從外部設(shè)備接收到用于更新本地項(xiàng)目的本地元素的第二通知和所述本地元素的內(nèi)容,生成用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求并提供給版本管理控制器,并且響應(yīng)于版本管理控制器處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本,并向外部設(shè)備輸出當(dāng)前版本。
2. 如權(quán)利要求l所述的版本管理系統(tǒng),其中,版本管理控制器進(jìn)一步被配置為響應(yīng)用于刪除本地項(xiàng)目中的本地元素的提交請(qǐng)求,刪除本地元素,第一同步裝置進(jìn)一步被配置為接收并向版本管理控制器轉(zhuǎn)發(fā)該提交請(qǐng)求,響應(yīng)于版本管理控制器處理該提交請(qǐng)求,向外部設(shè)備傳送關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素^皮刪除的第三通知;第二同步裝置進(jìn)一步被配置為響應(yīng)于從外部設(shè)備接收到用于刪除本地項(xiàng)目的本地元素的第四通知,生成用于刪除本地元素的提交請(qǐng)求并提供給版本管理控制器。
3. 如權(quán)利要求1所述的版本管理系統(tǒng),其中所述第一同步裝置進(jìn)一步被配置為首先進(jìn)行所述第一通知和所述當(dāng)前版本的所述傳送,從外部設(shè)備接收指示是否需要將所述本地元素的更新同步到其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第三通知,并且響應(yīng)于接收到指示需要進(jìn)行同步的第三通知,進(jìn)行所述內(nèi)容的所述獲得和傳送。
4. 如權(quán)利要求3所述的版本管理系統(tǒng),其中所述第一同步裝置進(jìn)一步被配置為在進(jìn)行所述提交請(qǐng)求的所述轉(zhuǎn)發(fā)之前進(jìn)行所述第 一通知的所述傳送,響應(yīng)于從外部設(shè)備接收指示可能需要將所述本地元素的更新同步到其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第四通知,進(jìn)行所述提交請(qǐng)求的所述轉(zhuǎn)發(fā)、所述當(dāng)前版本的所述獲得和傳送,以及所述內(nèi)容的所述獲得和傳送。
5. 如權(quán)利要求4所述的版本管理系統(tǒng),其中所述第四通知包括指示由于加鎖失敗而不需要進(jìn)行同步的信息,并且所述第 一 同步裝置進(jìn)一步被配置為響應(yīng)于所述信息終止所述提交請(qǐng)求的處理。
6. 如權(quán)利要求1所述的版本管理系統(tǒng),其中,所述外部設(shè)備是多個(gè)外部設(shè)備之一,并且所述第一同步裝置進(jìn)一步被配置為根據(jù)本地項(xiàng)目及本多個(gè)外部設(shè)備的訪問(wèn)信息,確定-存在所接收的提交請(qǐng)求中的本地項(xiàng)目和本地元素與所述外部設(shè)備之間的關(guān)聯(lián)關(guān)系,獲得所述存在的關(guān)聯(lián)關(guān)系中的所述外部設(shè)備和相應(yīng)的訪問(wèn)信息,并且才艮據(jù)相應(yīng)的訪問(wèn)信息與所述外部設(shè)備建立通信。
7. —種同步控制設(shè)備,包括映射處理裝置,被配置為從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的第 一通知和本地元素的當(dāng)前版本;確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)碧^目同的映射關(guān)系中,是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系;和響應(yīng)于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同;和同步裝置,被配置為從版本管理系統(tǒng)接收本地元素的內(nèi)容;和響應(yīng)于確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新本地元素的第二通知和本地元素的內(nèi)容,其中所述映射處理裝置進(jìn)一步被配置為從每個(gè)其它版本管理系統(tǒng)接收本地元素的當(dāng)前版本;和用當(dāng)前版本更新所存儲(chǔ)的本地元素的版本。
8. 如權(quán)利要求7所述的同步控制設(shè)備,其中映射處理裝置進(jìn)一步被配置為根據(jù)當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同,向版本管理系統(tǒng)發(fā)送指示是否需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第三通知,并且同步裝置進(jìn)一步被配置為在發(fā)送指示需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第三通知的情況下,進(jìn)行內(nèi)容的接收。
9. 如權(quán)利要求8所述的同步控制設(shè)備,其中所述映射處理裝置進(jìn)一步被配置為在所述第一通知的接收之后,響應(yīng)于確定存在映射關(guān)系,向版本管理系統(tǒng)發(fā)送指示可能需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第四通知;和在發(fā)送第四通知的情況下,進(jìn)行當(dāng)前版本的接收。
10. 如權(quán)利要求9所述的同步控制設(shè)備,其中第四通知包括指示由于加鎖失敗而不需要進(jìn)行同步的信息,并且映射處理裝置進(jìn)一步^:配置為響應(yīng)于確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同,在映射關(guān)系未加鎖的情況下對(duì)其加鎖,并且在映射關(guān)系已經(jīng)加鎖的情況下生成包含所述信息的笫四通知;和響應(yīng)于用從每個(gè)其它版本管理系統(tǒng)接收的當(dāng)前版本更新所存儲(chǔ)的本地元素的版本,將映射關(guān)系解鎖。
11. 如權(quán)利要求7所述的同步控制設(shè)備,其中,映射處理裝置進(jìn)一 步被配置為從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素被刪除的第三通知,確定在所存儲(chǔ)的映射關(guān)系中是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系,刪除確定存在的映射關(guān)系,和所存儲(chǔ)的由映射關(guān)系涉及的每個(gè)本地元素的版本,和所存儲(chǔ)的未由其它映射關(guān)系涉及的版本管理系統(tǒng)的訪問(wèn)信息,并且同步裝置進(jìn)一步被配置為響應(yīng)于確定存在映射關(guān)系,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于刪除本地元素的第四通知。
12. —種版本管理系統(tǒng)中管理項(xiàng)目的元素的版本的方法,包括接收用于更新本地項(xiàng)目中的本地元素的提交請(qǐng)求;根據(jù)提交請(qǐng)求處理本地元素的內(nèi)容和版本的更新;響應(yīng)于處理更新,獲得本地元素的當(dāng)前版本和內(nèi)容,并且向外部i殳備傳送關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的笫一通知,以及當(dāng)前版本和內(nèi)容;和響應(yīng)于從外部設(shè)備接收到用于更新本地項(xiàng)目的本地元素的第二通知和本地元素的內(nèi)容,生成用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求,根據(jù)生成的提交請(qǐng)求處理本地元素的內(nèi)容和版本的更新,并且響應(yīng)于處理更新,獲得本地元素的當(dāng)前版本,并向外部設(shè)備輸出當(dāng)前版本。
13. 如權(quán)利要求12所述的方法,還包括接收用于刪除本地項(xiàng)目中的本地元素的提交請(qǐng)求,根據(jù)提交請(qǐng)求刪除本地元素,并且響應(yīng)于處理該提交請(qǐng)求,向外部設(shè)備傳送關(guān)于本地項(xiàng)目的本地元素被刪除的第三通知;和響應(yīng)于從外部i殳^^接收到用于刪除本地項(xiàng)目的本地元素的第四通知,生成用于刪除本地元素的提交請(qǐng)求并處理該提交請(qǐng)求。
14. 如權(quán)利要求12所述的方法,其中首先進(jìn)行第一通知和當(dāng)前版本的傳送,從外部設(shè)備接收指示是否需要將本地元素的更新同步到其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第三通知,并且響應(yīng)于接收到指示需要進(jìn)行同步的第三通知,進(jìn)行內(nèi)容的獲得和傳送。
15. 如權(quán)利要求14所述的方法,其中在進(jìn)行根據(jù)提交請(qǐng)求的更新之前進(jìn)行第一通知的傳送,響應(yīng)于從外部設(shè)備接收指示可能需要將本地元素的更新同步到其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第四通知,進(jìn)行根據(jù)提交請(qǐng)求的更新、當(dāng)前版本的獲得和傳送,以及內(nèi)容的獲得和傳送。
16. 如權(quán)利要求15所述的方法,其中第四通知包括指示由于加鎖失敗而不需要進(jìn)行同步的信息,并且所述方法還包括響應(yīng)于所述信息終止提交請(qǐng)求的處理。
17. 如權(quán)利要求12所述的方法,其中,所述外部設(shè)^^是多個(gè)外部設(shè)備之一,所述方法還包括根據(jù)本地項(xiàng)目及本地項(xiàng)目中的本地元素與多個(gè)外部設(shè)備之間的關(guān)聯(lián)關(guān)系以及用于訪問(wèn)所述多個(gè)外部設(shè)備的訪問(wèn)信息,確定存在所接收的提交請(qǐng)求中的本地項(xiàng)目和本地元素與所述外部設(shè)備之間的關(guān)聯(lián)關(guān)系,獲得所述存在的關(guān)聯(lián)關(guān)系中的所述外部設(shè)備和相應(yīng)的訪問(wèn)信息,并且根據(jù)相應(yīng)的訪問(wèn)信息與所述外部設(shè)備建立通信。
18. —種同步控制方法,包括從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素發(fā)生更新的第一通知、本地元素的內(nèi)容和當(dāng)前版本,確定在所存儲(chǔ)的指示包括不同類(lèi)型的版本管理系統(tǒng)的集合中至少兩個(gè)版本管理系統(tǒng)的本地項(xiàng)目的本地元素內(nèi)斜目同的映射關(guān)系中,是否存在涉及版本管理系統(tǒng)的本地項(xiàng)目的本地元素的映射關(guān)系,并且響應(yīng)于確定存在映射關(guān)系,確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同;和響應(yīng)于確定存在映射關(guān)系并且當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn)信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于更新本地元素的第二通知和本地元素的內(nèi)容,從每個(gè)其它版本管理系統(tǒng)接收本地元素的當(dāng)前版本,并且用當(dāng)前版本更新所存儲(chǔ)的本地元素的版本。
19,如權(quán)利要求18所述的同步控制方法,其中根據(jù)當(dāng)前版本與所存儲(chǔ)的本地元素的版本是否相同,向版本管理系統(tǒng)發(fā)送指示是否需要將本地中的本地元素的第三通知,并且在發(fā)送指示需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第三通知的情況下,進(jìn)行內(nèi)容的接收。
20. 如權(quán)利要求19所述的同步控制方法,還包括在第一通知的接收之后,響應(yīng)于確定存在映射關(guān)系,向版本管理系統(tǒng)發(fā)送指示可能需要將本地元素的更新同步到映射關(guān)系所涉及的每個(gè)其它版本管理系統(tǒng)的本地項(xiàng)目中的本地元素的第四通知;和在發(fā)送第四通知的情況下,進(jìn)行當(dāng)前版本的接收。
21. 如權(quán)利要求20所述的同步控制方法,其中第四通知包括指示由于加鎖失敗而不需要進(jìn)行同步的信息,并且所述方法還包括響應(yīng)于確定當(dāng)前版本與所存儲(chǔ)的本地元素的版本不相同,在映射關(guān)系未加鎖的情況下對(duì)其加鎖,并且在映射關(guān)系已經(jīng)加鎖的情況下生成包含所述信息的第四通知;和響應(yīng)于用從每個(gè)其它版本管理系統(tǒng)接收的當(dāng)前版本更新所存儲(chǔ)的本 地元素的版本,將映射關(guān)系解鎖。
22.如權(quán)利要求18所述的同步控制方法,還包括從版本管理系統(tǒng)接收關(guān)于版本管理系統(tǒng)中本地項(xiàng)目的本地元素被刪 除的第三通知,確定在所存儲(chǔ)的映射關(guān)系中是否存在涉及版本管理系統(tǒng)的 本地項(xiàng)目的本地元素的映射關(guān)系,刪除確定存在的映射關(guān)系,和所存儲(chǔ)的 由映射關(guān)系涉及的每個(gè)本地元素的版本,和所存儲(chǔ)的未由其它映射關(guān)系涉 及的版本管理系統(tǒng)的訪問(wèn)信息;和響應(yīng)于確定存在映射關(guān)系,針對(duì)映射關(guān)系所涉及的每個(gè)其它版本管理 系統(tǒng)的本地項(xiàng)目的本地元素,根據(jù)所存儲(chǔ)的每個(gè)其它版本管理系統(tǒng)的訪問(wèn) 信息,向每個(gè)其它版本管理系統(tǒng)發(fā)送用于刪除本地元素的第四通知。
全文摘要
版本管理系統(tǒng)和方法以及同步控制設(shè)備和方法。版本管理系統(tǒng)包括版本管理控制器;第一同步裝置,接收并向版本管理控制器轉(zhuǎn)發(fā)提交請(qǐng)求,響應(yīng)于處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本和內(nèi)容,并向外部設(shè)備傳送關(guān)于本地項(xiàng)目的本地元素發(fā)生更新的第一通知,以及當(dāng)前版本和內(nèi)容;第二同步裝置,響應(yīng)于從外部設(shè)備接收到用于更新本地項(xiàng)目的本地元素的第二通知和本地元素的內(nèi)容,生成用于對(duì)本地元素進(jìn)行相應(yīng)更新的提交請(qǐng)求并提供給版本管理控制器,并響應(yīng)于處理提交請(qǐng)求,獲得本地元素的當(dāng)前版本,向外部設(shè)備輸出當(dāng)前版本。
文檔編號(hào)G06F9/44GK101661388SQ20081013553
公開(kāi)日2010年3月3日 申請(qǐng)日期2008年8月29日 優(yōu)先權(quán)日2008年8月29日
發(fā)明者強(qiáng) 張, 李起成 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司