專利名稱:一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及配置管理領(lǐng)域中的版本管理,尤其涉及一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法及系統(tǒng)。
背景技術(shù):
版本庫是版本控制系統(tǒng)用來存儲所有歷史數(shù)據(jù)的地方。大多數(shù)版本控制系統(tǒng)在版本庫中存儲文件的目前狀態(tài)、歷史修改時間,修改者以及修改原因等信息。每進(jìn)行一次提交,版本控制系統(tǒng)就會添加一個條目,并把提交的內(nèi)容保存在版本庫里。
在早期的版本控制系統(tǒng)中,必須登錄版本庫所在的服務(wù)器才能訪問到版本庫,這會帶來可擴(kuò)展性方面的問題。而較新的版本控制系統(tǒng),常見的集中式版本控制解決了這樣的問題。這類版本控制系統(tǒng)允許開發(fā)者通過網(wǎng)絡(luò)來獲取版本庫中的代碼,并在修改后提交回來。
在集中式版本控制模式下,開發(fā)者會把對版本的修改提交到公共的服務(wù)器。這類集中式版本庫的版本控制系統(tǒng)與早期的直接訪問式版本控制系統(tǒng)相比,有了很大進(jìn)步。
隨著網(wǎng)絡(luò)技術(shù)發(fā)展和軟件項目規(guī)模的不斷增大,異地分散網(wǎng)絡(luò)化軟件開發(fā)格局逐漸組成,分布式協(xié)同開發(fā)的需求也越來越迫切。
由于在實際的軟件開發(fā)過程中,代碼通常需要頻繁的檢入檢出操作,如果多個開發(fā)者同時高頻率地遠(yuǎn)程訪問公共版本庫,遠(yuǎn)程頻繁地進(jìn)行檢入檢出操作會給存儲公共版本庫的服務(wù)器造成嚴(yán)重的負(fù)擔(dān)。這種情況下,系統(tǒng)往往會出現(xiàn)操作反應(yīng)緩慢、實時性差甚至部分功能無法實現(xiàn)等問題。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服目前分布式協(xié)同開發(fā)環(huán)境下代碼的頻繁檢入檢出操作給服務(wù)器造成嚴(yán)重負(fù)擔(dān),出現(xiàn)反應(yīng)緩慢、實時性差以及部分功能無法實現(xiàn)的缺陷。
為了解決上述技術(shù)問題,本發(fā)明提供了一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法。該方法包括
將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫;
在本地對所述本地版本庫進(jìn)行代碼更新;
判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新,有則將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
進(jìn)一步,將公共版本庫從遠(yuǎn)程的服務(wù)器上克隆到本地生成本地版本庫的步驟包括采用安全外殼協(xié)議或超文本傳輸協(xié)議,將所述公共版本庫從所述遠(yuǎn)程服務(wù)器上克隆到本地,在本地生成所述本地版本庫。
進(jìn)一步,在本地對所述本地版本庫進(jìn)行代碼更新的步驟包括
在本地對所述本地版本庫進(jìn)行代碼更新,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容。
進(jìn)一步,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容的步驟包括為所述更新的代碼采用SHA-512散列進(jìn)行SHA-512哈希運算,得到SHA-512串值作為所述更新編號以區(qū)分所述不同的更新內(nèi)容。
進(jìn)一步,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中,包括對所述最新的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中,包括對所述更新后的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
根據(jù)本發(fā)明另一方面,還提供一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理系統(tǒng)。 該系統(tǒng)包括
克隆模塊,配置為將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫;
更新模塊,配置為在本地對所述本地版本庫進(jìn)行代碼更新;
判斷模塊,配置為判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新;
合并模塊,配置為所述判斷模塊判斷出當(dāng)前的公共版本庫相比所述克隆時有更新時,將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
進(jìn)一步,所述克隆模塊配置為采用安全外殼協(xié)議或超文本傳輸協(xié)議,將所述公共版本庫從所述遠(yuǎn)程服務(wù)器上克隆到本地,在本地生成所述本地版本庫。
進(jìn)一步,所述更新模塊配置為在本地對所述本地版本庫進(jìn)行代碼更新,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容。
進(jìn)一步,所述更新模塊配置為為所述更新的代碼采用SHA-512散列進(jìn)行SHA-512 哈希運算,得到SHA-512串值作為所述更新編號以區(qū)分所述不同的更新內(nèi)容。
進(jìn)一步,所述合并模塊配置為將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述最新的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;所述合并模塊配置為將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述更新后的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
與現(xiàn)有技術(shù)相比,本申請的實施例提出的分布式協(xié)同開發(fā)環(huán)境下的代碼管理技術(shù),采用開發(fā)者管理自己本地的版本庫而不是連接到公共的服務(wù)器的方法,克服了遠(yuǎn)程頻繁的檢入檢出操作對服務(wù)器的嚴(yán)重負(fù)擔(dān)。本申請的實施例中,所有的歷史記錄都存儲在本地的版本庫中,提交代碼到本地的版本庫中無須連接遠(yuǎn)程的公共版本庫,降低了對網(wǎng)絡(luò)的依賴性。本申請的實施例中,本地版本庫與公共版本庫的同步可以放在任意時刻,也可以離線管理,只需在有網(wǎng)絡(luò)連接時再進(jìn)行同步即可。公共版本庫的管理員也只需協(xié)調(diào)同步這些版本庫即可。
通過本申請的實施例,項目人員可以一起共同參與到軟件的開發(fā)中,調(diào)動了開發(fā)人員的積極性,協(xié)調(diào)開發(fā)的各個環(huán)節(jié),保證項目的順利實施,有效地縮減了項目的開發(fā)時間。本申請的實施例能夠有效地利用分布的人力資源、信息資源等各種有用的資源。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖用來提供對本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
圖I為本申請實施例的基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法的流程示意圖。
圖2為本申請實施例中本地工作目錄與本地版本庫之間的關(guān)系示意圖。
圖3為本申請實施例中本地版本庫對象關(guān)系示意圖。
圖4為本申請實施例中本地版本庫第二次提交的對象關(guān)系示意圖。
圖5為本申請實施例中對代碼進(jìn)行編譯和評審的流程示意圖。
圖6為本申請實施例的基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理系統(tǒng)的構(gòu)造示意圖。
具體實施方式
以下將結(jié)合附圖及實施例來詳細(xì)說明本發(fā)明的實施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。本申請實施例以及實施例中的各個特征在不相沖突前提下的相互結(jié)合,均在本發(fā)明的保護(hù)范圍之內(nèi)。
另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
如圖I所示本申請實施例的基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法主要包括如下內(nèi)容。
S110,將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地,在本地工作目錄下生成本地版本庫。該本地版本庫是對公共版本庫的完整的拷貝文件,包括公共版本庫的頭(HEAD)、主 (master)分支和對象庫等重要項。
本申請的實施例,采用安全外殼協(xié)議(SSH)或超文本傳輸協(xié)議(HTTP)等協(xié)議將公共版本庫從遠(yuǎn)程的服務(wù)器上克隆到本地,在本地生成本地版本庫以對公共版本庫進(jìn)行完整拷貝。
本地工作目錄與本地版本庫之間的關(guān)系如圖2所示,左側(cè)為工作區(qū),右側(cè)為版本庫。其中master是本地的主分支所代表的目錄樹,指向了最新的提交。HEAD是指向master 分支的一個游標(biāo),這樣就可以用于追蹤整個提交歷史。臨時存儲區(qū)是本地工作目錄和本地版本庫之間的中間狀態(tài),可以是一個虛擬的工作區(qū),記錄文件名和文件狀態(tài)等信息,文件的內(nèi)容可以不存儲在其中而是保存到對象庫目錄中。對象庫記錄了所有的對象。
S120,在本地工作目錄下對本地版本庫進(jìn)行代碼更新。在本地工作目錄下對本地版本庫進(jìn)行更新后,將更新文件添加到本地的臨時存儲區(qū),再從本地的臨時存儲區(qū)提交到本地版本庫,并根據(jù)提交的內(nèi)容產(chǎn)生唯一數(shù)字標(biāo)識來作為更新編號,以區(qū)分不同開發(fā)者提交到公共版本庫中的內(nèi)容。
對公共版本庫的拷貝文件(即本地版本庫)進(jìn)行更新,包括向公共版本庫的拷貝文件中新增文件,或者對公共版本庫的拷貝文件進(jìn)行修改。相應(yīng)地,更新的文件包括向公共版本庫的拷貝文件中新增的文件,或者對公共版本庫的拷貝文件進(jìn)行修改的文件。
當(dāng)本地工作目錄有更新執(zhí)行添加操作后,臨時存儲區(qū)會被更新。本地版本庫對象關(guān)系如圖3所示,工作區(qū)新增了一個目錄和兩個文件,文件內(nèi)容分別是Four score and seven和Mike had a little lamb,它們分別存放在塊對象dead23和feeble中,對象名是根據(jù)SHA-512計算得出,取得結(jié)果的前幾位來表示。目錄使用樹對象進(jìn)行存儲,樹對象 8675309包含dead23和feeble兩個塊對象。提交對象1492指向樹對象8675309。
進(jìn)一步,如圖4的本地版本庫第二次提交的對象關(guān)系示意,新增一個文件,文件內(nèi)容是There once was a man,存放到塊對象1010b中。由于添加了新的塊對象,會生成新的樹對象cafedOOd。其中塊對象dead23和feeble沒有變化,樹對象cafedOOd和8675309 共享它們兩個塊對象。當(dāng)執(zhí)行提交操作時,臨時存儲區(qū)的內(nèi)容寫入到本地版本庫中,master 分支會做相對應(yīng)的更新,指向新的提交點。
S130,判斷當(dāng)前的公共版本庫相比克隆時是否有更新,有更新則轉(zhuǎn)S140,否則轉(zhuǎn) S160。
S140,從遠(yuǎn)程服務(wù)器上抓取當(dāng)前的公共版本庫的更新內(nèi)容合并到代碼更新后的本地版本庫中,得到最新的本地版本庫,轉(zhuǎn)S150。
本申請的實施例在本地創(chuàng)建一個抓取分支(public_branch分支)用于抓取公共版本庫的更新內(nèi)容。該抓取分支主要是用來同步公共版本庫,獲取他人向公共版本庫中提交的更新代碼。public_branch分支獲得公共版本庫他人提交的更新代碼后,在本地進(jìn)行分支合并,將public_branch分支中的內(nèi)容合并到本地版本庫的主分支(master分支)上,其中 public_branch分支中已經(jīng)包含了他人向公共版本中提交的更新代碼。合并之后得到最新的本地版本庫。
分支合并過程中如果產(chǎn)生沖突,則先解決沖突然后再進(jìn)行合并,否則直接進(jìn)行分支合并操作。比如本地的master分支和public_branch分支只是對于不同文件或是同一文件的不同行進(jìn)行了更改,則直接就能合并成功;如果本地的master分支和public_branch 分支對文件的同一行或同幾行進(jìn)行更改時,將發(fā)生沖突,版本庫會列出沖突的具體位置,在解決沖突后再進(jìn)行合并。
S150,將最新的本地版本庫的代碼合并到當(dāng)前的公共版本庫中。
S160,將代碼更新后的本地版本庫的代碼合并到當(dāng)前的公共版本庫中。
本申請的實施例中,對于部分開發(fā)者,可以直接將最新的本地版本庫的代碼或者代碼更新后的本地版本庫的代碼合并到當(dāng)前的公共版本庫中;而對于另一部分開發(fā)者,則可能需要對所開發(fā)的代碼進(jìn)行編譯和評審,以保證代碼的正確性和穩(wěn)定性。
如圖5所示,在將最新的本地版本庫的代碼或者更新后的本地版本庫的代碼合并到公共版本庫中之前可以對其進(jìn)行編譯和評審,該過程主要包括如下內(nèi)容。
S510,將合并成功后的本地主分支的代碼作為下游版本庫提交到上游版本庫。
S511,對下游版本庫提交的代碼進(jìn)行編譯。本申請的實施例中,下游版本庫提交的代碼會自動觸發(fā)上游版本庫的編譯構(gòu)建環(huán)境。
S512,編譯通過,則轉(zhuǎn)S513,編譯未通過則轉(zhuǎn)S517。
S513,對代碼的規(guī)范以及代碼完成的功能進(jìn)行評審。
S514,評審?fù)ㄟ^,則轉(zhuǎn)S515,否則轉(zhuǎn)S516。S515,將下游版本庫提交的代碼合并到公共版本庫中。
S516,通知代碼評審未通過,提示可以修改代碼后重新提交。
S517,通知代碼編譯未通過,提示可以修改后重新提交。
本申請的實施例中,對下游版本庫提交上來的代碼采用集中式進(jìn)行管理,按提交的先后順序進(jìn)行評審。在通過評審之后再將本地版本庫中的代碼納入正式的版本庫中,可以提高代碼的質(zhì)量,保證公共版本庫中代碼的正確性和穩(wěn)定性。
本申請的實施例中,將公共版本庫克隆到本地工作目錄,使得每一個本地版本庫都是對公共版本庫的完整拷貝,能提供版本控制服務(wù)器所能提供的一切服務(wù),可以自己進(jìn)行本地版本庫的管理,更傾向于松散、自由式的分布開發(fā)。同時對個人外出、客戶現(xiàn)場、項目研發(fā)分布多個地點等場景進(jìn)行支持,使開發(fā)者在任何地點都能夠獲得最新的代碼進(jìn)行版本控制,以便在完成后能夠?qū)⑦^程和結(jié)果一并攜帶。
本申請的實施例中,首先把修改的文件添加到臨時存儲區(qū),其中臨時存儲區(qū)是本地工作目錄和本地版本庫之間的緩沖區(qū),存放的是準(zhǔn)備提交到本地版本庫中的修改內(nèi)容。
在分布式協(xié)同開發(fā)環(huán)境下,每個開發(fā)者都可以通過克隆版本庫的方式工作在分布的本地版本庫當(dāng)中,在本地做的提交可以通過版本庫之間的交互而相互分發(fā),這就要求提交的編號不能僅僅是本地局部有效,而要在全局上具有唯一性。本申請的實施例采用 SHA-512散列,對提交的內(nèi)容來進(jìn)行SHA-512哈希運算,得到SHA-512串值作為每次提交的內(nèi)容的更新編號。
分布式協(xié)同開發(fā)最明顯的特點是在開發(fā)過程中對同一數(shù)據(jù)對象進(jìn)行修改一般都會產(chǎn)生沖突,從而破壞一致性。本申請的實施例采用合并技術(shù),保證了多個開發(fā)者可以同時工作,并隨意地編輯文件(不必對文件進(jìn)行鎖定)。
本申請的實施例中,開發(fā)者將本地開發(fā)成果相對穩(wěn)定的內(nèi)容、需要與其它人共享的或是需要共同開發(fā)的內(nèi)容等提交到上游版本庫中,可以實現(xiàn)信息共享、便于其他開發(fā)者的使用。當(dāng)然,開發(fā)者是可以選擇性地對代碼進(jìn)行提交,對于預(yù)研性、不成熟、或是私有的代碼保留到本地。
本申請的實施例,可以為項目的管理者提供了一個讓其他開發(fā)者只讀訪問的公共版本庫,只對核心開發(fā)者授權(quán)進(jìn)行寫操作。其他開發(fā)者的提交必須要經(jīng)過一個或多個核心開發(fā)者的審核后,經(jīng)由核心開發(fā)者推送合并到公共的版本庫,確保代碼的質(zhì)量。
本申請的實施例,可以保證代碼的整個開發(fā)、維護(hù)過程采用分布式的工作環(huán)境,集中式匯總來自各個版本庫的內(nèi)容,支持有關(guān)開發(fā)者集體進(jìn)行開發(fā)工作的一種環(huán)境,以群體工作目標(biāo)為核心,組織有關(guān)人員協(xié)同工作。本申請的實施例解決了集中模式下服務(wù)器負(fù)荷過重的不足。本申請的實施例避免了完全分布式結(jié)構(gòu)存在的數(shù)據(jù)維護(hù)困難,協(xié)調(diào)管理工作延遲等缺點。
本申請的實施例采用分布式開發(fā)與集中式管理的協(xié)同模式。分布式的開發(fā)情形下,開發(fā)者在本地的版本庫下工作,使得代碼控制本地化,支持離線提交,不會因為頻繁地遭遇沖突而中斷開發(fā),將整個開發(fā)過程從宏觀上真正的并行起來。集中式的管理情形下,當(dāng)代碼需要集成到公共版本庫的時候才串行起來,只有評審?fù)ㄟ^的代碼,才能真正合并到公共版本庫。通過集中整合各地分散獨立的版本庫,形成金字塔狀網(wǎng)絡(luò)式協(xié)同模型。本申請的實施例所產(chǎn)生的技術(shù)效果,能夠有效地利用分布的人力資源,保證項目的順利實施,縮減項目開發(fā)時間。
如圖6所示,本申請實施例的基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理系統(tǒng)主要包括克隆模塊610、更新模塊620、判斷模塊630以及合并模塊640。
克隆模塊610,配置為將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫。
更新模塊620,與克隆模塊610相連,配置為在本地對所述本地版本庫進(jìn)行代碼更新。
判斷模塊630,配置為判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新。
合并模塊640,與更新模塊620及判斷模塊630相連,配置為所述判斷模塊630判斷出當(dāng)前的公共版本庫相比所述克隆時有更新時,將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
克隆模塊610配置為采用安全外殼協(xié)議或超文本傳輸協(xié)議,將所述公共版本庫從所述遠(yuǎn)程服務(wù)器上克隆到本地,在本地生成所述本地版本庫。
更新模塊620配置為在本地對所述本地版本庫進(jìn)行代碼更新,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容。
更新模塊620配置為為所述更新的代碼采用SHA-512散列進(jìn)行SHA-512哈希運算,得到SHA-512串值作為所述更新編號以區(qū)分所述不同的更新內(nèi)容。
合并模塊640配置為將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述最新的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中。
合并模塊640配置為將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述更新后的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本申請實施例所提供的系統(tǒng)的各組成部分, 以及方法中的各步驟,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上。可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn)。從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法,其特征在于,包括 將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫; 在本地對所述本地版本庫進(jìn)行代碼更新; 判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新,有則將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,將公共版本庫從遠(yuǎn)程的服務(wù)器上克隆到本地生成本地版本庫,包括 采用安全外殼協(xié)議或超文本傳輸協(xié)議,將所述公共版本庫從所述遠(yuǎn)程服務(wù)器上克隆到本地,在本地生成所述本地版本庫。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,在本地對所述本地版本庫進(jìn)行代碼更新,包括 在本地對所述本地版本庫進(jìn)行代碼更新,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容,包括 為所述更新的代碼采用SHA-512散列進(jìn)行SHA-512哈希運算,得到SHA-512串值作為所述更新編號以區(qū)分所述不同的更新內(nèi)容。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于, 將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中,包括對所述最新的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中; 將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中,包括對所述更新后的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
6.一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理系統(tǒng),其特征在于,包括 克隆模塊,配置為將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫; 更新模塊,配置為在本地對所述本地版本庫進(jìn)行代碼更新; 判斷模塊,配置為判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新; 合并模塊,配置為所述判斷模塊判斷出當(dāng)前的公共版本庫相比所述克隆時有更新時,將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于 所述克隆模塊配置為采用安全外殼協(xié)議或超文本傳輸協(xié)議,將所述公共版本庫從所述遠(yuǎn)程服務(wù)器上克隆到本地,在本地生成所述本地版本庫。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于 所述更新模塊配置為在本地對所述本地版本庫進(jìn)行代碼更新,為更新的代碼生成更新編號以區(qū)分不同的更新內(nèi)容。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于 所述更新模塊配置為為所述更新的代碼采用SHA-512散列進(jìn)行SHA-512哈希運算,得到SHA-512串值作為所述更新編號以區(qū)分所述不同的更新內(nèi)容。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述合并模塊配置為將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述最新的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中; 所述合并模塊配置為將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中時,對所述更新后的本地版本庫進(jìn)行編譯和評審,通過所述編譯和評審后將所述更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。
全文摘要
本發(fā)明公開了一種基于分布式協(xié)同開發(fā)環(huán)境下的代碼管理方法及系統(tǒng)。該方法包括將公共版本庫從遠(yuǎn)程服務(wù)器上克隆到本地生成本地版本庫;在本地對所述本地版本庫進(jìn)行代碼更新;判斷當(dāng)前的公共版本庫相比所述克隆時是否有更新,有則將所述當(dāng)前的公共版本庫相比所述克隆時的更新內(nèi)容合并到所述代碼更新后的本地版本庫中得到最新的本地版本庫,將所述最新的本地版本庫合并到所述當(dāng)前的公共版本庫中;否則將所述代碼更新后的本地版本庫合并到所述當(dāng)前的公共版本庫中。本發(fā)明能夠克服目前分布式協(xié)同開發(fā)環(huán)境下代碼的頻繁檢入檢出操作給服務(wù)器造成嚴(yán)重負(fù)擔(dān),出現(xiàn)反應(yīng)緩慢、實時性差以及部分功能無法實現(xiàn)的缺陷。
文檔編號G06F9/44GK102929630SQ20121042862
公開日2013年2月13日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者薛文 申請人:中標(biāo)軟件有限公司