專利名稱::用于文件版本控制管理的方法和系統(tǒng)的制作方法
技術領域:
:本發(fā)明一般涉及計算機文件管理,并且更特別地,涉及用于文件版本控制管理的方法、系統(tǒng)和計算枳4呈序產(chǎn)品。
背景技術:
:實時操作系統(tǒng)(OS)軟件通常用在要求快速、大容量、高吞吐量事務處理能力的系統(tǒng)中。要求具有高可靠性的連續(xù)不斷的操作的系統(tǒng)對在這樣的環(huán)境中執(zhí)行的OS和應用軟件提出了甚至更大的一組挑戰(zhàn)。可能要求這樣的OS的應用包括預訂系統(tǒng)、銀行系統(tǒng)、授權系統(tǒng)、路由系統(tǒng)和調遣系統(tǒng),在這些系統(tǒng)中,系統(tǒng)運營商承擔不起系統(tǒng)維護或升級的停機時間。這些應用需要高性能,特別是當合并到大M^莫、廣區(qū)域、多用戶的網(wǎng)絡中時。為了升級和改進運行在實時OS上的應用且無需停止或重置該OS正在其上執(zhí)行的系統(tǒng),文件版本管理的專用方法是必需的。一種在執(zhí)行實時OS的系統(tǒng)(稱為聯(lián)機系統(tǒng))中更新應用程序的方法是使用分離系統(tǒng)(稱為脫機系統(tǒng))來開發(fā)新的應用程序,并且然后將該應用程序傳送至聯(lián)機系統(tǒng)。一些聯(lián)機系統(tǒng)含有多個處理器,其各自可以基于來自聯(lián)機系統(tǒng)的各個用戶的請求而執(zhí)行任務。聯(lián)機系統(tǒng)中的處理器通常對保存應用程序的程序庫(programbase)進行共享訪問。當任務執(zhí)行時,調用應用程序的特定版本。當任務執(zhí)行在持續(xù)時間上發(fā)生變化時,沖突可能發(fā)生在應用程序被更新而任務正在有效執(zhí)行該應用程序的版本的時候。例如,聯(lián)機系統(tǒng)可以含有兩個處理器,且第一處理器正在4吏用應用程序的版本1.0執(zhí)行所啟動的任務,而第二處理器空閑。當應用程序的版本2.0被傳送至聯(lián)機系統(tǒng)并且被激活而第一處理器仍在執(zhí)行版本1.0時,聯(lián)機系統(tǒng)必須容納版本2.0而不影響仍在由笫一處理器使用的版本l.O。當在第一服務器上執(zhí)行版本l.O的任務完成之前,任務可以使用應用程序的版本2.0在第二處理器上開始執(zhí)行。聯(lián)機系統(tǒng)內的這一可能的沖突使得專門的版本管理技術成為必要,該技術允許應用程序的多個版M在于聯(lián)機系統(tǒng)內,與此同時還維護應用版本與在不同處理器上執(zhí)行的任務之間的關聯(lián)。隨著應用程序的演進,對支持應用程序或由應用程序插裝(populate)的數(shù)據(jù)文件存在較大的依賴性。通常使用文件系統(tǒng)而不是程序庫,獨立于應用程序來管理數(shù)據(jù)文件。與應用程序不同,通常不通過文件系統(tǒng)環(huán)境中的版本控制來管理數(shù)據(jù)文件。此外,存在不符合應用程序或數(shù)據(jù)文件的常規(guī)類別的文件類型,例如Java".jar"和".class"文件。由于存在廣泛多樣的文件類型和應用程序,因此開發(fā)一種這樣的方法將會是有益的,即該方法通過控制對聯(lián)機系統(tǒng)中每個處理器均是可用的每個文件或應用程序的版本,管理所有的這些任意字節(jié)流文件(arbitrarybytestreamfile)。版本控制管理應當足夠穩(wěn)健以便管理與任務關聯(lián)的一組任意字節(jié)流文件,從而使得多個版本可以在任務有效時存在。此外,在完成使用任意字節(jié)流文件的較舊版本的任務后,應當更新該任意字節(jié)流文件的存儲的基準版本(baselineversion),以侵/f壬務的將來調用訪問文件和應用程序的最新版本。雖然文件版本管理系統(tǒng)存在于軟件開發(fā)環(huán)境的上下文中,但是這樣的系統(tǒng)未能處理多處理器實時執(zhí)行環(huán)境所面臨的獨特問題。例如,文件版本控制管理系統(tǒng)可以支持源代碼的多個版本的創(chuàng)建,并且允許源代碼的不同版本與軟件構造文件的不同版本的關聯(lián),從而使得可以再現(xiàn)應用程序的各種版本。其它的文件版本管理系統(tǒng)通常用于備份和恢復的目的,其中,通過創(chuàng)建和修改的時間記錄(chronology)來標識文件版本。然而,這樣的系統(tǒng)未能管理在諸如先前所描述的聯(lián)機系統(tǒng)之類的系統(tǒng)(其中仍在使用該應用程序和關聯(lián)文件的先前版本)中對應用程序和關聯(lián)文件的部署。因此,需要這樣一種方法,即該方法在多處理器實時執(zhí)4亍環(huán)境中管理任意字節(jié)流文件的多個版本,從而使得該多處理器實時執(zhí)行環(huán)境內的各個處理器均可以在不影響其它處理器的情況下訪問不同的文件版本。
發(fā)明內容實施例包括一種用于文件版本控制管理的方法。所述方法包括接收具有至少一個數(shù)據(jù)文件的加栽集(loadset)以及激活所述加載集。對于所述加栽集中的每個數(shù)據(jù)文件,將所述數(shù)據(jù)文件寫入目標系統(tǒng)并且通過基本名稱(basename)和生成號(generationnumber)來對其進行標識。在版本控制文件索引(VCFX,versioncontrolfileindex)中創(chuàng)建具有激活號(activationnumber)的符號鏈接指向寫入所述目標系統(tǒng)的數(shù)據(jù)文件。提供所述符號鏈接的應用視圖(applicationview)作為所述數(shù)據(jù)文件的基本名稱,并且基于應用的激活號與所述符號鏈接的激活號相對應來限制所述符號鏈接的應用視圖。另外的實施例包括一種用于文件版本控制管理的系統(tǒng)。所述系統(tǒng)包括目標文件系統(tǒng)、VCFX,以及聯(lián)機加載器應用。所述聯(lián)機加載器應用接收具有至少一個數(shù)據(jù)文件的加載集并且激活所述加載集。對于所述加載集中的每個數(shù)據(jù)文件,將所述數(shù)據(jù)文件寫入所述目標文件系統(tǒng)并且通過基本名稱和生成號來對其進行標識。在所述VCFX中創(chuàng)建具有激活號的符號鏈接指向寫入所述目標文件系統(tǒng)的數(shù)據(jù)文件。提供所述符號鏈接的應用視圖作為所述數(shù)據(jù)文件的基本名稱,并且基于應用的激活號與所述符號^t接的激活號相對應來限制所述符號鏈接的應用視圖。進一步的實施例包括一種用于文件版本控制管理的計算機程序產(chǎn)品。所述計算積^呈序產(chǎn)品包括可由處理電路讀取并且存儲了由所述處理電#行以便促進方法的指令的存儲介質。所述方法包括接收具有至少一個數(shù)據(jù)文件的加載集以及激活所述加載集。對于所述加載集中的每個數(shù)據(jù)文件,識。在VCFX中創(chuàng)建具有激活號的符號鏈二接指向寫入所述目標系統(tǒng)的數(shù)據(jù)文件。提供所述符號鏈接的應用視圖作為所述數(shù)據(jù)文件的基本名稱,并且應用視圖。在詳閱以下附圖和詳細描述后,根據(jù)實施例的其它系統(tǒng)、方法和/或計算機程序產(chǎn)品對于本領域的技術人員來說會是或變得顯而易見。意味著所有這樣的附加系統(tǒng)、方法和/或計算機程序產(chǎn)品都包括在該描述之內、在本發(fā)明的范圍之內,并且受到所附權利要求的保護?,F(xiàn)參照附圖,在多幅圖中用類似的方式對相同的元件進行標號,其中圖1是可以通過示例性實施例實現(xiàn)的版本控制管理系統(tǒng)的框圖2是描述了示例性實施例中的版本控制管理過程的流程圖3是描述了示例性實施例中的符號鏈接過程的流程圖4是描述了示例性實施例中的符號鏈接移除過程的流程圖;以及圖5是描述了示例性實施例中的清理(clean-up)過程的流程圖。具體實施例方式示例性實施例在多處理器實時執(zhí)行環(huán)境中管理^(壬意字節(jié)流文件的多個版本,從而使得該多處理器實時執(zhí)行環(huán)境內的各個處理器在不影響其它處理器的情況下可以訪問不同的文件版本。在示例性實施例中,聯(lián)機系統(tǒng)是多處理器實時執(zhí)行環(huán)境,且該聯(lián)機系統(tǒng)的維護和更新由脫機系統(tǒng)管理??梢詫⒃诿摍C系統(tǒng)上開發(fā)的應用程序(文中也稱為"應用"或"程序")組在一起作為加載集,用于聯(lián)機系統(tǒng)的更有效的同時更新。加載集可以含有從脫機系統(tǒng)傳送至聯(lián)機系統(tǒng)的一個或多個程序。加載集還可以含有支持程序執(zhí)行的數(shù)據(jù)文件或任何類型的任意字節(jié)流文件。數(shù)據(jù)文件(也稱為"文件")是二進制或文本信息的任何集合,并且可以包括但不限于配置參數(shù)、數(shù)據(jù)結構格式、模板、操作信息、支持信息、命令腳本,或者輔助程序的任何其它類型的信息。數(shù)據(jù)文件還可以包括諸如Java".jar"和".class"文件之類的可執(zhí)行文件。在示例性實施例中,聯(lián)機系統(tǒng)在程序庫中存儲程序以及在文件系統(tǒng)中存儲文件。通過對加載集的使用,將程序和文件作為單元來動態(tài)地管理。如文中所^L用的,術語"裝載(mounting)"或"可裝載(mountable)"指的是附于或鏈接于文件系統(tǒng)或文件的目錄。如文中所使用的,術語"符號鏈接"指的是文件的指針或其它參考。在示例性實施例中,存在兩種方式使數(shù)據(jù)文件成為加栽集的一部分。駐留在脫機系統(tǒng)(在其上創(chuàng)建了加載集)上的文件可以隨任何的關聯(lián)程序一起直接包含于加栽集中。當在脫機系統(tǒng)上創(chuàng)建加載集時,可以使已經(jīng)駐留在聯(lián)機系統(tǒng)上的文件附屬于該加載集。一旦將加載集加栽到聯(lián)機系統(tǒng),就可以將任何的附屬文件(affiliatedfile)部署為新的文件版本,以便允許在激活加載集時的更新,而不擾亂原始文件內容。在示例性實施例中,聯(lián)機加載器為加載集提供版本控制,以便對長時運行的程序維護一致的執(zhí)行環(huán)境,甚至在動態(tài)地取消激活(deactivate)或卸載了含有程序(或其依賴的其它程序)的加載集,并且加載和激活了加載集的新版本的時候。在示例性實施例中,通過諸如激活、接受、取消激活和卸載之類的操作在聯(lián)機系統(tǒng)上管理加載集。當在聯(lián)機系統(tǒng)上加載了加載集時,通過激活使該加載集內的文件可訪問。在示例性實施例中,激活在不移除或替換任何較舊的版本的情況下創(chuàng)建了加載集內每個文件或程序的副本。在激活過程期間,每個處理器上的聯(lián)機加載器均生成處理器獨特激活號(processoruniqueactivationnumber)來表示該激活。將向PtJ^在該處理器上創(chuàng)建的任務分派此相同的激活號,直到加載器為下一激活或取消激活請求生成新的激活號。無論任務何時參考文件或程序,其激活號均隱式地確定了該任務可以使用文件或程序的哪個版本。當運行程序的較舊版本或訪問文件的較舊版本的任務完成時,可以接受新的程序和文件版本。接受過程更新文件系統(tǒng)中的文件以及程序庫中的記錄,與此同時還移除符號鏈接以及在加載和激活過程期間所創(chuàng)建的其它制品(artifact)。一旦已經(jīng)接受了文件或程序,將來的任務調用就將訪問已接受的版本,直到伴隨較新版本的另一加載集的到來。還可以對加載集取消激活,即運行通過激活卻不被接受。類似地,通過從存儲器中移除加載集可以卸載該加載集。存在相對于加載集可以執(zhí)行的很多其它可能的操作,這對于本領域的技術人員來說將是顯而易見的?,F(xiàn)轉至較為詳細的附圖,在圖1中將會看到系統(tǒng)100的框圖,依照示例性實施例可以在系統(tǒng)100上實現(xiàn)文件版本控制管理。圖1的系統(tǒng)100包括聯(lián)機系統(tǒng)102,該聯(lián)機系統(tǒng)102與通過網(wǎng)絡106在通信上耦合的脫機系統(tǒng)104進行通信。聯(lián)機系統(tǒng)102可以是從事大容量處理的高速處理設備(例如,主計算機)。在示例性實施例中,聯(lián)機系統(tǒng)102執(zhí)行實時操作系統(tǒng)(OS)和應用程序。聯(lián)機系統(tǒng)102可以含有訪問z^用程序池并且執(zhí)行任務的多個處理器。在示例性實施例中,脫機系統(tǒng)104是對聯(lián)機系統(tǒng)102進行維護任務和更新的臺式計算機、工作站或其它的通用計算機設備。雖然在圖l中僅示出了單聯(lián)機系統(tǒng)102和單脫機系統(tǒng)104,但A^該理解到,可以實現(xiàn)多個聯(lián)機或脫機系統(tǒng),其各自經(jīng)由直接耦合或經(jīng)由一個或多個網(wǎng)絡來相互通信。例如,多個聯(lián)機或脫機系統(tǒng)可以通過分布式網(wǎng)絡體系結構互連。單聯(lián)機系統(tǒng)102還可以表示訪問諸如數(shù)據(jù)存儲設備110之類的直接訪問存儲設備的聯(lián)機系統(tǒng)的+彿合復合體(complex)。網(wǎng)絡106可以是本領域已知的任何類型的通信網(wǎng)絡。例如,網(wǎng)絡106可以是內聯(lián)網(wǎng)、外聯(lián)網(wǎng),或者諸如因特網(wǎng)的互聯(lián)網(wǎng),或其組合。網(wǎng)絡106可以是無線或有線網(wǎng)絡。網(wǎng)絡106可以是同構的或者是各種子網(wǎng)絡的集合。一個或多個代理系統(tǒng)也可以耦合于網(wǎng)絡106,例如代理系統(tǒng)108。在示例性實施例中,在聯(lián)機系統(tǒng)102上執(zhí)行的一個或多個任務使得代理系統(tǒng)108能夠訪問和更新存儲在數(shù)據(jù)存儲設備110上的數(shù)據(jù)。聯(lián)機系統(tǒng)102為多個代理系統(tǒng)108提供實時或接近實時的訪問。在示例性實施例中,代理系統(tǒng)108可以請求執(zhí)行正在由文中所描述的文件版本控制管理過程所控制的應用程序。代理系統(tǒng)108表示進行諸如預定、電子轉移資金、進行帳戶授權或派遣服務之類的任務的、分布在不同地理區(qū)域的用戶。數(shù)據(jù)存儲設備110指的是任何類型的存儲器,并且可以包括二級存儲元件,例如硬盤驅動器、磁帶,或者在聯(lián)機系統(tǒng)102外部的存儲子系統(tǒng)??梢源鎯υ跀?shù)據(jù)存#^殳備110中的數(shù)據(jù)的類型包括但不限于程序、文件、數(shù)據(jù)庫,以及不常被訪問的存檔數(shù)據(jù)??梢岳斫?,圖l中所示出的婆:據(jù)存^fti殳備no是出于簡化和易于解釋的目的而提供的,并不認為是在范圍上的限制。相反,在示例性實施例中可以存在由聯(lián)機系統(tǒng)102所利用的多個數(shù)據(jù)存儲設備。在示例性實施例中,聯(lián)機系統(tǒng)102是諸如IBM的事務處理設施(TransactionProcessingFacility)(TPF)之類的高可靠性實時系統(tǒng)。聯(lián)機系統(tǒng)102可以在多個處理器上執(zhí)行多個任務來支持來自代理系統(tǒng)108的請求。在示例性實施例中,通過各種邏輯分區(qū)來訪問和管理存儲在數(shù)據(jù)存儲設備110上的文件和程序。通過程序庫118來管理駐留在數(shù)據(jù)存^i殳備110內的程序。通過文件系統(tǒng)120來訪問和管理存儲在數(shù)據(jù)存儲設備110內的文件。盡管圖1中僅描繪了一個程序庫118和一個文件系統(tǒng)120,然而應該理解,可以實現(xiàn)多個程序庫和文件系統(tǒng)。在示例性實施例中,文件系統(tǒng)120是用于Unix的便攜式操作系統(tǒng)接口(POSIX,portableoperatingsysteminterfaceforUnix)可兼容文件系統(tǒng)。文件系統(tǒng)120可以是這樣的可裝載文件系統(tǒng)的集合,即該可裝載文件系統(tǒng)具有可基于特定的所有者、用戶或組來分派的不同許可級別。在示例性實施例中,文件系統(tǒng)120是處理器共享的TPF集合支持文件系統(tǒng)(TFS,TPFcollectionsupportfilesystem)。對許可的使用限制了訪問以及在文件系統(tǒng)內進行操作的能力,例如,讀、寫、移除或執(zhí)^f亍。虛擬文件系統(tǒng)(VFS,virtualfilesystem)體系結構可以用于建立新的文件系統(tǒng)來管理被部署為加載集的文件版本。經(jīng)由VFS,通過在所裝載的顯式版本化根(explicitlyversionedroot)的子目錄中表示版本化文件條目,可以在版本化目錄結構上支持完整的文件系統(tǒng)功能性。符號鏈接準許用戶和應用程序對待處于版本控制下的文件就好像該文件駐留在任何文件系統(tǒng)中的任何目錄內那樣。在示例性實施例中,通過可裝載的、處理器獨特的、常駐內存文件系統(tǒng)(文中稱為版本控制文件索引(VCFX)122)在聯(lián)機系統(tǒng)102中的各個處理器上分別提供處于版本控制下的文件的應用視圖。可以通過文件名和激活號來組織VCFX122中的目錄結構。激活號用于控制應請求而訪問或返回的文件版本。在示例性實施例中,VCFX122中的每個文件均是參考了位于處理器共享文件系統(tǒng)120中別的地方的文件版本的符號鏈接。VCFX122看起來就好像是這樣的應用,即該應用僅含有其基于激活號可訪問的那些文件版本。在示例性實施例中,文件是通過其基本名稱來獲知的,并且基于激活號的額外的層次級別受到抑制(suppressed)。可以通過對相關文件系統(tǒng)操作的專門實現(xiàn),以對普通用戶和應用完全透明的方式來提供該現(xiàn)象。在示例性實施例中,對于VCFX122中條目的更新是作為通過聯(lián)機加栽器應用116的命令的結果來進行的。聯(lián)機加載器應用116可以支持各種命令以進4ti者如對VCFX122中條目的激活、接受、移除和重新包括之類的活動。除了響應命令之外,聯(lián)機加載器應用116還進行策略性活動(policingactivity),例如,當不再需要所刪除的加載集時將其移除。在示例性實施例中,聯(lián)機加載器應用116支持對加載集的選擇性激活。選擇性激活對于哪些任務對加載集進行訪問提供控制。在示例性實施例中,脫機系統(tǒng)104執(zhí)行類似Unix的操作系統(tǒng),例如Linux。脫機系統(tǒng)104可以支持用于創(chuàng)建與聯(lián)機系統(tǒng)102兼容的應用程序和文件的各種開發(fā)工具。脫機加載器應用112在脫機系統(tǒng)104上運行以支持加載集創(chuàng)建。脫機加載器應用112提供命令以便將駐留于脫機系統(tǒng)104上的文件和應用程序包括在諸如加載集114的加載集中。在脫機系統(tǒng)104上創(chuàng)建加載集的命令可以包括一列程序和/或文件。圖1的加載集114包括兩個程序和兩個文件。然而,加載集114僅是一個例子,因為應該理解,加栽集可以包括程序和/或文件的任何組合。在創(chuàng)建加載集114時,脫機系統(tǒng)104的用戶可以合并M,例如,在聯(lián)機系統(tǒng)102中將存儲文件或程序的特定目標位置。在示例性實施例中,將程序定為存儲在程序庫118內并且將文件定為存儲在文件系統(tǒng)120內。如果在加載集創(chuàng)建期間未指定文件或程序的特定目標位置,則可以使用缺省值。在示例性實施例中,當在聯(lián)機系統(tǒng)102上于加載集激活時間部署被包括文件(includedfile)時,將該文件的所有者名稱、組名和許可比特i殳置成與該文件的脫機副本的上述內斜目同的值;然而,如果在聯(lián)機系統(tǒng)102中未定義所有者名稱或組名,則用缺省值代替。脫機系統(tǒng)104的用戶可以為文件的所有者名稱、組名和許可比特安排特定的值。脫機加載器應用112可以指定當通過聯(lián)機加載器應用116對加載集114進行加載時,駐留于文件系統(tǒng)120內的文件應該附屬于該加栽集。在示例性實施例中,當在加載集激活時間部署附屬文件時,將文件的所有者名稱、組名和許可比特設置成與該文件的原始聯(lián)機副本中相同的值。與直接被包括在加載集中的文件一樣,脫機系統(tǒng)104的用戶可以為附屬文件的所有者名稱、組名和許可比特安排特定的值。在示例性實施例中,作為加載集激活的結果而在諸如文件系統(tǒng)120的目標文件系統(tǒng)中隨后創(chuàng)建的特定文件的所有版本均被建立具有與被包括或附屬數(shù)據(jù)文件本身相同的所有者、組和許可設置。在目標文件系統(tǒng)中創(chuàng)建以便促進對這些版本的訪問的所有其它條目(例如,子目錄和鏈接),以及在VCFX122中創(chuàng)建的所有條目,均由指定用戶所有。在示例性實施例中,指定用戶是組"bin"中的"vc/jc",并且寫許可僅被授權給所有者。對指定所有者的許可控制防止了對基本文件(basefile)或任何后續(xù)版本的不適當?shù)闹孛蛞瞥?。此外,VCFX122內的許可控制還防止在文件版本間創(chuàng)建不想要的文件并且阻閉未經(jīng)授權的程序或用戶的寫嘗試。在示例性實施例中,當通過聯(lián)機加載器應用116將加載集114加載到聯(lián)機系統(tǒng)102時,在記錄中安裝加載集114的內容。如果附屬文件是加載集的一部分,則記錄還可以保存該附屬文件。對于聯(lián)機系統(tǒng)102中的每個處理器,記錄為隨后部署到目標文件系統(tǒng)提供了臨時保存區(qū)(holdingarea)。當通過聯(lián)機加載器應用116在聯(lián)機系統(tǒng)102中的處理器上激活具有^f皮包括或附屬數(shù)據(jù)文件的加載集時,該文件^皮部署到由加載集中指定的目標位置所標識的文件系統(tǒng),例如文件系統(tǒng)120。在示例性實施例中,諸如加載集114的加載集參考多個文件系統(tǒng),包括未在圖1中描繪但是通過聯(lián)機系統(tǒng)102可訪問的文件系統(tǒng)??梢越⒎朸接以允許通過參考所部署的文件的正確版本的普通名稱來透明地對其進行訪問。在示例性實施例中,對所部署的文件的名稱解析(nameresolution)路由通過VCFX122,在其中發(fā)生版本解析。文中較為詳細地描述了符號鏈接過程?,F(xiàn)轉至圖2,現(xiàn)在將依照示例性實施例來描述用于實現(xiàn)版本控制管理過程的過程200。在塊202處,通過聯(lián)機加載器應用116在聯(lián)機系統(tǒng)102上接收或加載包括至少一個數(shù)據(jù)文件的加載集-在塊204處,通過聯(lián)機加載器應用116激活聯(lián)機系統(tǒng)102上的加載集。激活過程包括利用生成號(其在松耦合處理器復合體上是獨特的)將加載集中的每個數(shù)據(jù)文件寫入目標文件系統(tǒng)120。激活過程還包括在VCFX122中創(chuàng)建具有激活號的符號鏈接指向目標文件系統(tǒng)120上具有生成號的每個數(shù)據(jù)文件。因而,每個處理器上的VCFX提供了激活號(其是處理器獨特的(processorunique))到生成號(其范圍跨越整個處理器復合體)的本質映射(essentialmapping)。提供符號鏈接的應用視圖作為數(shù)據(jù)文件的基本名稱?;趹?06處,接受或取消激活已激活的加載集。當接受加載集時,將目標文件系統(tǒng)120上具有生成號的數(shù)據(jù)文件重命名成該數(shù)據(jù)文件的基本名稱,并且移除符號鏈接。當對加載集取消激活時,移除符號鏈接,并且還移除目標文件系統(tǒng)120上具有生成號的數(shù)據(jù)文件。進行進一步的清理過程以移除可能不再使用的任何剩余的鏈接。還可以對加載集進行其它過程,例如,排除文件或程序,以及將文件或程序重新包括到加載集中?,F(xiàn)轉至圖3,現(xiàn)在將依照示例性實施例來描述用于在VCFX122中實現(xiàn)符號鏈接的過程300。對聯(lián)機系統(tǒng)102(在其上激活了加載集)中各個處理器上的每個被包括或附屬數(shù)據(jù)文件進行符號鏈接。在塊302處,在目標系統(tǒng)上創(chuàng)建指向數(shù)據(jù)文件的基本名稱的基本文件鏈接。例如,可以創(chuàng)建名為"似/^Coc/y^""附e/力"的鏈接作為指向基本文件"似/^w/0c^/efiff附,的鏈接。3口果"似rgW/oc/y/eiKi附e/0"已經(jīng)存在或者"torgC/oc^f/e"ff附e"并不存在,則該步驟可無害地(harmlessly)失敗?;疚募溄犹峁┝送ㄟ^VCFX122對基本文件的訪問,這在文件的一個或多個其它版本是有效的時候可能被要求。在塊304處,在VCFX122中創(chuàng)建含有塊302的基本文件鏈接的符號鏈接。在示例性實施例中,如果指向基本文件的鏈接在塊302中是成功的,那么在VCFX122中創(chuàng)建符號鏈接。例如,可以在VCFX122中創(chuàng)建含有名為"to^"/oc/y7/efm附e/0"的基本文件鏈接的、名為"vc/x/to/^CtfC,^/crttfme/『的符號鏈接。在塊306處,在目標文件系統(tǒng)中部署具有與加載集關聯(lián)的生成號的數(shù)據(jù)文件。例如,可以在目標文件系統(tǒng)中部署名為"rai^e^c//&waiMe/ww#"的數(shù)據(jù)文件,其中是與加載集的該加載關聯(lián)的獨特的正單調遞增的生成號。在塊308處,在VCFX122中創(chuàng)建指向具有該生成號的數(shù)據(jù)文件的符號鏈接。在示例性實施例中,符號鏈接包括用于將該符號鏈接與加載集的生成號相關聯(lián)的激活號。例如,可以在VCFX122中創(chuàng)建含有名為""的目標鏈接的、名為"vc/j^w^"/0^^wfl附e/flc賴"的符號鏈接,其中"flc/T是激活號。另夕卜,可以將加載集名稱和當前激活號寫入VCFX122可用的表格用于將來的參考。在塊310處,如果具有到VCFX122的符號鏈接(即,不是基本文件本身)的數(shù)據(jù)文件的基本名稱(例如"toi^甴c^/e""挑e")存在,那么該過程結束;否則,進行塊312。符號鏈接可以已經(jīng)由聯(lián)機系統(tǒng)102內的另一處理器創(chuàng)建。符號鏈接還可以作為尚未4皮清理的先前激活的結果而存在,等待另一任務的完成。在塊312處,在目標系統(tǒng)中創(chuàng)建符號鏈接并且將其重命名成數(shù)據(jù)文件的基本名稱。例如,可以將含有"vc/;c^afge^C/^femMMe"暫時名為的符號^^重命名成'?"rg"/oc^/e"a附e"。重命名符號鏈接向目標文件系統(tǒng)提供了這樣的實體,即通過該實體可以方便地訪問版本化文件。在示例性實施例中,重命名操作以原子方式(atomically)更新目錄,提供對名為"tofg"foc^few(wwe"的實體的一致和不間斷的訪問。如果目標文件系統(tǒng)向聯(lián)機系統(tǒng)102內多個處理器提供了對公用文件(commonfiles)的訪問,那么在其上未激活加栽集的其它處理器可以進行塊304中所定義的符號鏈接以維持對基本文件的訪問。在示例性實施例中,在重新啟動對在聯(lián)機系統(tǒng)102內另一處理器上具有有效版本的文件的第一訪問之后,隱式地進行塊30t當在聯(lián)機系統(tǒng)102上執(zhí)行的應用發(fā)布了要求解析VCFX122中的路徑名稱(例如"vc/^/tof^^c^/emiwe")的功能調用時,文件系統(tǒng)120獲得調用應用(callingapplication)的激活級,并且然后確定哪個(如果有的話)現(xiàn)有符號鏈接(例如"w/^/torge^c/y/e"fl附e/"c賴")適于遵循該調用應用?,F(xiàn)轉至圖4,現(xiàn)在將依照示例性實施例來描述用于實現(xiàn)對VCFX122中的符號鏈接的移除的過程400。當通過聯(lián)機加載器應用116接受具有被包括或附屬數(shù)據(jù)文件的激活加載集時,可以移除由符號鏈接過程300所創(chuàng)建的符號鏈接,并且可以重命名文件以便可以直接對其進行訪問。在示例性實施例中,聯(lián)機系統(tǒng)102上的每個處理器對每個被包括或附屬數(shù)據(jù)文件進行過程400。在塊402處,將目標系統(tǒng)上具有生成號的數(shù)據(jù)文件重命名成基本文件鏈接。例如,可以將文件"似i^W/0c/"/ewfl附e/^"r重命名成"^^^c/y^fm附e/0"。如果目標文件系統(tǒng)是只讀的,則不發(fā)生重命名。在示例性實施例中,對數(shù)據(jù)文件的重命名以原子方式拆除基本文件的鏈接(例如"似rge^c/,/7/^i"/fie/力"),如果其存在的話。即使文件已經(jīng)被聯(lián)機系統(tǒng)102內的另一處理器重命名,文件系統(tǒng)120也可以支持重命名操作。在塊404處,移除VCFX122中指向數(shù)據(jù)文件的符號鏈接(例如"vc/A/to/^W/oc^/e麗/we/flc賴")。在塊406處,如果存在符號鏈接的任何其它的版本(例如"vc/x^^C/oc^/e"tf附e/flc賴",其中"c拔大于0),那么該過程終止;否則,進行塊408。當保持符號鏈接時,這指示到基本文件的版本仍在由處于不同激活級的其它任務使用。在塊408處,將基本文件鏈接重命名成數(shù)據(jù)文件的基本文件名。例如,將"似rg"/oc/^/e"fl附e/力"重命名成"似"gC/oc^/e"fl/w,(除非目標文件系統(tǒng)是只讀的)。重命名過程可以以原子方式移除符號鏈接(例如"torge^c^/^m附e")。即使文件已經(jīng)被聯(lián)機系統(tǒng)102內的另一處理器重命名,文件系統(tǒng)120也可以支持重命名操作。在塊410處,移除VCFX122中含有基本文件鏈接的符號鏈接(例如"vc/x/tof^^c^/emi附e/0"),如果該符號鏈接存在的話?,F(xiàn)轉至圖5,現(xiàn)在將描述用于實現(xiàn)清理過程的過程500。在示例性實施例中,當通過聯(lián)機加載器116取消激活或接受加載集時,加載集的當前激活號被傳達給VCFX122。VCFX122使用該激活號來安排運行在較高激活級的任務進行的查找的正確處理。當聯(lián)機加載器116的策略性功能注意到激活級為空時,對已經(jīng)在其上激活了加栽集的每個處理器上的每個被包括或附屬數(shù)據(jù)文件進行清理過程。在塊502處,如果在VCFX122中存在符號鏈接版本(例如"vc/A/torgC/oc^/ew"附e/."c賴"),那么進行塊504;否則,由于已經(jīng)接受了加載集并且沒有要清理的事物,因此該過程終止。在塊504處,移除VCFX122中的符號鏈接版本(例如"vc/x^"/^C/oc^/efm附e/acrr)。在塊506處,移除目標系統(tǒng)上具有生成號的數(shù)據(jù)文件(例如"似f^,/oc/yfe朋we/^^"),除非目標文件系統(tǒng)是只讀的。在示例性實施例中,目標文件系統(tǒng)是TFS,因而是處理器共享的,并且由聯(lián)機系統(tǒng)102內要取消激活的最后的處理器來進行移除。在塊508處,如果存在符號鏈接的其它版本(例如"vc/A/似/^C/oc^fewfl附e/flc賴",其中"c賴大于0),那么進行塊510;否則,該過程終止。存在符號鏈接的另一版本指示到基本文件的版本仍在由其它的激活級使用。在塊510處,如果存在基本文件鏈接(例如"torge^c/y^"fl附e/力"),那么進行塊512;否則,進行塊514。在塊512處,將基本文件鏈接(例如"to/^W/oc/,/^"fl附e/力")重命名成數(shù)據(jù)文件的基本名稱(例如"似尸g"/oc^/emi附e"),除非目標文件系統(tǒng)是只讀的。在塊514處,移除指向數(shù)據(jù)文件的基本名稱的符號鏈接(例如"似/^^c^/emi附e")。一些文件系統(tǒng),例如文件系統(tǒng)120,可以將塊512和514組合為在重命名后以原子方式移除符號鏈接。在其它的文件系統(tǒng)中,要是目標文件系統(tǒng)不是只讀的,則對符號鏈接(例如"to/^^c^/ew"挑,)的移除是獨立的操作。在示例性實施例中,目標文件系統(tǒng)是TFS,因而是處理器共享的,并且由聯(lián)機系統(tǒng)102內要取消激活的最后的處理器來進行移除。在塊516處,移除VCFX122中指向基本文件鏈接的符號鏈接(例如'W/A/to/^/toc^/ewfl附e/力"),要是該符號鏈接仍然存在的話。在示例性實施例中,目標文件系統(tǒng)是TFS,因而是處理器共享的,并且由聯(lián)機系統(tǒng)102內要取消激活的最后的處理器來進行移除;另外,在聯(lián)機系統(tǒng)102中的其上尚未激活加載集的處理器上進行塊516。當通過聯(lián)機加載器116刪除加載集時,含于記錄中的任何被包括或附屬數(shù)據(jù)文件隨其本身的程序一起被刪除。在示例性實施例中,存在當將成組的程序和文件作為加載集進行管理時必須注意到的特殊考慮。例如,當加載集含有公用的被包括或附屬數(shù)據(jù)文件或程序的不同版本時,其可以是相交的(intersecting)。在示例性實施例中,必須按照其被激活的順序接受具有公用的被包括或附屬數(shù)據(jù)文件或程序的加載集。聯(lián)機加載器116可以管理用于對加載集中程序的激活和接受進行排序的規(guī)則,而VCFX122可以對數(shù)據(jù)文件推行類似的規(guī)則。進一步的特殊考慮包括管理文件系統(tǒng)120中對于特定程序庫來說獨特的數(shù)據(jù)文件。程序庫獨特文件(programbaseuniquefiles)本身可以是可執(zhí)行體(即,存儲在文件系統(tǒng)中的程序,例如Java".jar"和".class"文件),或者其可以對于特定程序的執(zhí)行是固有的(例如配置文件)并且因而必須與在其中駐留了那些程序的程序庫相聯(lián)系。這樣的文件可能要求特定量的專門處理以維護與駐留于程序庫118中的常規(guī)程序完全一致的版本管理。聯(lián)機加載器116相對于加載集的動作應用于在相同的程序庫118上運行的處理器。在示例性實施例中,為了在程序庫118內的程序與文件系統(tǒng)120內的程序庫獨特文件之間獲得等效的版本管理,將駐留于文件系統(tǒng)120中的程序庫獨特文件與程序庫118相聯(lián)系。為了在程序庫118與文件系統(tǒng)120之間建立連接,可以將子目錄(例如7s>^;g/,)置于根文件系統(tǒng)120中以表示所有程序庫獨特文件的主目錄。另外,可以提供各自標識了特定程序庫的一組根目錄(例如,7/m^c,,)來保存與每個程序庫(例如程序庫118)相關聯(lián)的程序庫獨特文件。將開始于程序庫獨特目錄(例如"/5^/F唯/,)的路徑名的查找重定向到對于處理器當前正在其上運行的程序庫118來說合適的目錄(例如“/progx”)o在示例性實施例中,對在程序庫獨特目錄(例如'7/m^jc")以及4壬何的其子目錄中創(chuàng)建和刪除條目的授權限于聯(lián)機和脫機加載器112和116??梢詫⒊绦驇飒毺匚募惭b在使用加載器112和116的聯(lián)機系統(tǒng)102上,指定含于虛擬子目錄(例如"A"http://^^")中的目標位置。聯(lián)機加載器116解析虛擬子目錄(例如"A^/prog")并且將文件部署到合適的目錄(例如'7戶W)。在適當?shù)哪夸?例如"http://^wx")中透明地創(chuàng)建可以為程序庫獨特文件創(chuàng)建的子目錄、文件和^1接,作為在使用虛擬子目錄(例如)的查找中的初始重定向的結果。由于VCFX122是處理器獨特的并且在重新啟動聯(lián)機系統(tǒng)102期間凈皮重新添加(repopulated),因此通過VCFX122的鏈接可以繼續(xù)根據(jù)虛擬目標位置(例如"/^s//7g,,)而不是特定的程序庫(例如"/^vgjc")而4皮配制(formulate)。示例性實施例的技術效果和好處包括對于與一個或多個程序可能一起組為加載集的任意字節(jié)流文件的透明版本控制。加載集4吏得任意字節(jié)流文件能夠被作為單元來動態(tài)地管理,從而支持諸如對文件的集體加載、激活、取消激活和卸載的活動。在以相干方式管理關聯(lián)于變更版本的所有程序和文件時,加栽集進一步使得能夠在不中止或重置系統(tǒng)的情況下維護和更新實時系統(tǒng)。如上所述,可以以計算機實現(xiàn)的過程和用于實踐那些過程的裝置的形式體現(xiàn)本發(fā)明的實施例。還可以以含有體現(xiàn)于有形介質(例如,軟盤、CD-ROM、硬盤驅動器,或者任何其它的計算機可讀存儲介質)中的指令的計算機程序代碼的形式體現(xiàn)本發(fā)明的實施例,其中,當將該計算機程序代碼加載到計算機中并且由該計算機執(zhí)行時,該計算機成為用于實踐本發(fā)明的裝置。還可以以計算機程序代碼(例如,無論是存儲在存儲介質中、加載到計算機和/或由計算機執(zhí)行,還是在某種傳輸介質上(例如,在電線或電纜上、通過光纖或經(jīng)由電磁輻射)傳輸)的形式體現(xiàn)本發(fā)明,其中,當將該計算機程序代碼加載到計算機中并且由該計算機執(zhí)行時,該計算機成為用于實踐本發(fā)明的裝置。當在通用微處理器上實現(xiàn)時,該計算機程序代碼段配置該微處理器以創(chuàng)建特定的邏輯電路。雖然已經(jīng)參照示例性實施例描述了本發(fā)明,但是本領域的技術人員應該理解,在不背離本發(fā)明的范圍的情況下可以進行各種變化并且可以用等同物替換其元件。另外,在不背離本發(fā)明的基本范圍的情況下可以進行很多修改以使特定情形或材料適應本發(fā)明的教導。因此,意味著本發(fā)明并不限于作為所設想來實現(xiàn)本發(fā)明的最好模式而公開的特定實施例,而是本發(fā)明將包括落入所附權利要求的范圍內的所有實施例。此外,術語"第一"、"第二"等的使用不表示任何順序或重要性,而是使用術語"第一"、"第二"等來區(qū)分不同的元件。權利要求1.一種用于文件版本控制管理的方法,所述方法包括接收具有至少一個數(shù)據(jù)文件的加載集;以及激活所述加載集,其包括對于所述加載集中的每個數(shù)據(jù)文件將所述數(shù)據(jù)文件寫入目標系統(tǒng)并且通過基本名稱和生成號來標識所述數(shù)據(jù)文件;在版本控制文件索引中創(chuàng)建具有激活號的符號鏈接指向寫入所述目標系統(tǒng)的數(shù)據(jù)文件;提供所述符號鏈接的應用視圖作為所述數(shù)據(jù)文件的基本名稱;以及基于應用的激活號與所述符號鏈接的激活號相對應來限制所述符號鏈接的應用視圖。2.根據(jù)權利要求1的方法,其進一步包括接受所述加載集,其包括將每個寫入所述目標系統(tǒng)的所述數(shù)據(jù)文件重命名成所述數(shù)據(jù)文件的基本名稱;以及移除指向每個所述數(shù)據(jù)文件的符號鏈接。3.根據(jù)權利要求1的方法,其進一步包括對所述加載集取消激活,其包括移除指向每個寫入所述目標系統(tǒng)的數(shù)據(jù)文件的符號鏈接;以及移除每個寫入所述目標系統(tǒng)的數(shù)據(jù)文件。4.根據(jù)權利要求1的方法,其中所述加載集進一步包括至少一個程序。5.根據(jù)權利要求l的方法,其中所述數(shù)據(jù)文件被包括在所^>栽集中。6.根據(jù)權利要求l的方法,其中所述數(shù)據(jù)文件附屬于所述加載集。7.根據(jù)權利要求1的方法,其中所述數(shù)據(jù)文件是程序庫獨特文件。8.根據(jù)權利要求7的方法,其進一步包括通過虛擬目錄將所述程序庫獨特文件鏈接到程序庫。9.一種用于文件版#制管理的系統(tǒng),所述系統(tǒng)包括目標文件系統(tǒng);版^制文件索引;以及聯(lián)機加載器應用,所述聯(lián)機加載器應用進行接收具有至少一個數(shù)據(jù)文件的加載集;以及激活所述加載集,其包括對于所述加載集中的每個數(shù)據(jù)文件將所述數(shù)據(jù)文件寫入所述目標文件系統(tǒng)并且通過基本名稱和生成號來標識所述數(shù)據(jù)文件;在所述版本控制文件索引中創(chuàng)建具有激活號的符號鏈接指向寫入所述目標文件系統(tǒng)的數(shù)據(jù)文件;提供所述符號鏈接的應用視圖作為所述數(shù)據(jù)文件的基本名稱;以及基于應用的激活號與所述符號鏈接的激活號相對應來限制所述符號鏈接的應用視圖。10.根據(jù)權利要求9的系統(tǒng),其中所述聯(lián)機加載器應用進一步進行接受所述加載集,其包括將每個寫入所述目標文件系統(tǒng)的所述數(shù)據(jù)文件重命名成所述數(shù)據(jù)文件的基本名稱;以及移除指向每個所述數(shù)據(jù)文件的符號鏈接。11.根據(jù)權利要求9的系統(tǒng),其中所述聯(lián)機加栽器應用進一步進行對所述加載集取消激活,其包括移除指向每個寫入所述目標文件系統(tǒng)的所述數(shù)據(jù)文件的符號鏈接;以及移除每個寫入所述目標文件系統(tǒng)的所述數(shù)據(jù)文件。12.根據(jù)權利要求9的系統(tǒng),其中所述加載集進一步包括至少一個程13.根據(jù)權利要求9的系統(tǒng),其中所述數(shù)據(jù)文件被包括在所述加載集中。14.根據(jù)權利要求9的系統(tǒng),其中所述數(shù)據(jù)文件附屬于所^口載集。15.根據(jù)權利要求9的系統(tǒng),其中所述數(shù)據(jù)文件是程序庫獨特文件。16.根據(jù)權利要求15的系統(tǒng),其中所述聯(lián)機加載器應用進一步進行:通過虛擬目錄將所述程序庫獨特文件鏈接到程序庫。全文摘要本發(fā)明提供了用于文件版本控制管理的方法、系統(tǒng)和計算機程序產(chǎn)品。所述方法包括接收具有至少一個數(shù)據(jù)文件的加載集以及激活所述加載集。對于所述加載集中的每個數(shù)據(jù)文件,將所述數(shù)據(jù)文件寫入目標系統(tǒng)并且通過基本名稱和生成號來對其進行標識。在版本控制文件索引(VCFX)中創(chuàng)建具有激活號的符號鏈接指向寫入所述目標系統(tǒng)的數(shù)據(jù)文件。提供所述符號鏈接的應用視圖作為所述數(shù)據(jù)文件的基本名稱,并且基于應用的激活號與所述符號鏈接的激活號相對應來限制所述符號鏈接的應用視圖。文檔編號G06F9/44GK101192151SQ20071016959公開日2008年6月4日申請日期2007年11月13日優(yōu)先權日2006年11月28日發(fā)明者G·W·小西爾斯,R·O·德賴富斯,S·A·帕夫拉克斯,S·E·雷科德申請人:國際商業(yè)機器公司