代碼庫(kù)拆分的方法及裝置的制造方法
【專利摘要】本發(fā)明公開(kāi)了一種代碼庫(kù)拆分的方法及裝置,涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,為解決代碼庫(kù)拆分效率低下的問(wèn)題而發(fā)明。本發(fā)明的方法包括:讀取預(yù)設(shè)的拆分配置文件,所述拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行拆分;根據(jù)所述拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件;根據(jù)所述拆分配置文件中的拆分配置信息對(duì)所述原代碼庫(kù)的代碼文件進(jìn)行拆分,獲得多個(gè)目標(biāo)代碼庫(kù);將所述目標(biāo)代碼庫(kù)推送給所述拆分配置文件指定的服務(wù)器。本發(fā)明主要應(yīng)用于對(duì)release代碼庫(kù)拆分的過(guò)程中。
【專利說(shuō)明】
代碼庫(kù)拆分的方法及裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種代碼庫(kù)拆分的方法及裝置。
【背景技術(shù)】
[0002] 代碼庫(kù)提供了一種將代碼封裝在單個(gè)文件中、允許繼承和修改這些文件的方法。 開(kāi)發(fā)者將各自的代碼以文件的形式保存在代碼庫(kù)中,相互之間進(jìn)行調(diào)用,實(shí)現(xiàn)代碼共享。
[0003] 隨著項(xiàng)目的不斷發(fā)展,代碼庫(kù)也會(huì)越來(lái)越大,過(guò)于龐大的代碼庫(kù)不僅會(huì)增加服務(wù) 器的負(fù)荷壓力,而且還會(huì)增加代碼導(dǎo)出的耗時(shí)。因此拆分代碼庫(kù)便成為項(xiàng)目進(jìn)展到一定階 段時(shí)必須考慮的問(wèn)題。通常,可以將一個(gè)服務(wù)器上的代碼庫(kù)拆分為幾個(gè)子代碼庫(kù)并分別部 署到不同的服務(wù)器上,以此減輕單個(gè)服務(wù)器的負(fù)荷壓力。同時(shí),單個(gè)服務(wù)器上代碼量的降低 還可以提高查找目標(biāo)代碼的速度,由此縮短代碼導(dǎo)出的耗時(shí)。
[0004] 現(xiàn)有拆分代碼庫(kù)的過(guò)程是由操作人員基于導(dǎo)出管理工具手動(dòng)操作完成的。操作人 員需要在導(dǎo)出管理工具的操作界面中手動(dòng)創(chuàng)建新的代碼庫(kù),然后從原代碼庫(kù)的文件目錄中 復(fù)制不同分支的代碼文件,最后以生成提交信息的形式將不同分支的代碼文件導(dǎo)入到不同 的新代碼庫(kù)中??梢钥闯觯F(xiàn)有方式主要依靠人工操作拆分代碼庫(kù),效率較為低下。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供一種代碼庫(kù)拆分的方法及裝置,能夠解決代碼庫(kù)拆分效率低下的問(wèn) 題。
[0006] 為解決上述問(wèn)題,一方面,本發(fā)明提供了一種代碼庫(kù)拆分的方法,該方法包括:
[0007] 讀取預(yù)設(shè)的拆分配置文件,拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行拆分;
[0008] 根據(jù)拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件;
[0009] 根據(jù)拆分配置文件中的拆分配置信息對(duì)原代碼庫(kù)的代碼文件進(jìn)行拆分,獲得多個(gè) 目標(biāo)代碼庫(kù);
[0010]將目標(biāo)代碼庫(kù)推送給拆分配置文件指定的服務(wù)器。
[0011] 另一方面,本發(fā)明還提供了一種代碼庫(kù)拆分的裝置,該裝置包括:
[0012] 讀取單元,用于讀取預(yù)設(shè)的拆分配置文件,拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行拆 分;
[0013] 獲取單元,用于根據(jù)拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件;
[0014] 拆分單元,用于根據(jù)拆分配置文件中的拆分配置信息對(duì)原代碼庫(kù)的代碼文件進(jìn)行 拆分,獲得多個(gè)目標(biāo)代碼庫(kù);
[0015] 推送單元,用于將目標(biāo)代碼庫(kù)推送給拆分配置文件指定的服務(wù)器。
[0016] 本發(fā)明提供的代碼庫(kù)拆分的方法及裝置,能夠根據(jù)拆分配置文件中的原代碼庫(kù)信 息獲取作為拆分對(duì)象的代碼文件,通過(guò)拆分配置信息將代碼文件拆分為不同的目標(biāo)代碼 庫(kù),并將目標(biāo)代碼庫(kù)推送到相應(yīng)的服務(wù)器中。與現(xiàn)有技術(shù)相比,代碼文件的查找、拆分、推送 等過(guò)程全部通過(guò)對(duì)拆分配置文件的執(zhí)行自動(dòng)實(shí)現(xiàn),無(wú)需人工操作參與,因此本發(fā)明能夠提 高代碼庫(kù)的拆分效率。
【附圖說(shuō)明】
[0017] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0018] 圖1為本發(fā)明實(shí)施例提供的一種代碼庫(kù)拆分的方法流程圖;
[0019] 圖2為本發(fā)明實(shí)施例提供的另一種代碼庫(kù)拆分的方法流程圖;
[0020] 圖3為本發(fā)明實(shí)施例提供的一種代碼庫(kù)拆分的裝置的組成框圖;
[0021] 圖4為本發(fā)明實(shí)施例提供的另一種代碼庫(kù)拆分的裝置的組成框圖。
【具體實(shí)施方式】
[0022]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0023]為解決手動(dòng)拆分代碼庫(kù)效率低下的問(wèn)題,本發(fā)明一個(gè)實(shí)施例提供了一種代碼庫(kù)拆 分的方法,如圖1所示,該方法包括:
[0024] 101、讀取預(yù)設(shè)的拆分配置文件。
[0025] 原代碼庫(kù)中的代碼包括前端開(kāi)發(fā)、系統(tǒng)開(kāi)發(fā)、網(wǎng)站開(kāi)發(fā)等各種過(guò)程涉及的代碼內(nèi) 容。以前端開(kāi)發(fā)為例,原代碼庫(kù)中包括的代碼不限于是組件代碼、控件代碼及窗體代碼。本 實(shí)施例不對(duì)原代碼庫(kù)中的代碼類型進(jìn)行限制。
[0026] 通常原代碼庫(kù)中的代碼是以動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library,簡(jiǎn)稱DLL)文件 的形式存儲(chǔ)的,根據(jù)代碼類型、代碼功能、代碼使用權(quán)限、代碼所屬部門等不同維度的劃分, 這些代碼文件之間的從屬關(guān)系能夠形成一個(gè)文件目錄結(jié)構(gòu),這個(gè)文件目錄結(jié)構(gòu)即為本實(shí)施 例中的拆分對(duì)象。
[0027] 本實(shí)施例的目的在于通過(guò)拆分配置文件將原代碼庫(kù)拆分為多個(gè)新的代碼庫(kù)。該拆 分配置文件為根據(jù)預(yù)設(shè)拆分需求編寫的配置文件,其中包括用于指定原代碼庫(kù)的原代碼庫(kù) 信息、決定如何拆分代碼文件以獲得哪幾個(gè)目標(biāo)代碼庫(kù)的拆分配置信息、以及將目標(biāo)代碼 庫(kù)推送給哪個(gè)服務(wù)器的指定信息。拆分配置文件編寫完成后配置到原代碼庫(kù)所在的服務(wù)器 中,當(dāng)操作人員觸發(fā)代碼庫(kù)拆分指令時(shí),該服務(wù)器讀取并解析拆分配置文件,按照拆分配置 文件中的參數(shù)對(duì)原代碼庫(kù)進(jìn)行拆分。實(shí)際應(yīng)用中,當(dāng)拆分需求發(fā)生變化時(shí),可以對(duì)拆分配置 文件進(jìn)行修改,然后重啟服務(wù)器使新的拆分配置文件生效。本實(shí)施例中,拆分配置文件的格 式包括但不限于是可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language,簡(jiǎn)稱XML)格式及腳本 格式。
[0028] 102、根據(jù)拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件。
[0029] 通常一臺(tái)服務(wù)器中可以僅部署一個(gè)代碼庫(kù),也可以部署多個(gè)代碼庫(kù);而在虛擬機(jī) 環(huán)境中,由于服務(wù)器中的每一個(gè)虛擬機(jī)都可以部署一個(gè)或多個(gè)代碼庫(kù),因此單臺(tái)服務(wù)器上 的代碼庫(kù)數(shù)量有可能會(huì)更多。為實(shí)現(xiàn)對(duì)作為拆分對(duì)象的原代碼庫(kù)的準(zhǔn)確查找,本實(shí)施例在 拆分配置文件中設(shè)置了原代碼庫(kù)信息,服務(wù)器通過(guò)原代碼庫(kù)信息可以定位查找到原代碼 庫(kù)。拆分配置文件中可以記錄一個(gè)原代碼庫(kù)的原代碼庫(kù)信息,也可以記錄多個(gè)原代碼庫(kù)的 原代碼庫(kù)信息。當(dāng)實(shí)現(xiàn)方式為后者時(shí),服務(wù)器可以一次對(duì)部署在自身的多個(gè)原代碼庫(kù)分別 進(jìn)行拆分。實(shí)際應(yīng)用中,一切能夠?qū)υa庫(kù)進(jìn)行唯一標(biāo)識(shí)的信息均可以用作原代碼庫(kù)信 息,本實(shí)施例不對(duì)原代碼庫(kù)信息的具體形式進(jìn)行限制。
[0030] 在根據(jù)原代碼庫(kù)信息查找到原代碼庫(kù)后,服務(wù)器獲取原代碼庫(kù)中的代碼文件,即 上述文件目錄結(jié)構(gòu)中的內(nèi)容。服務(wù)器可以根據(jù)實(shí)際需求獲取全部文件目錄結(jié)構(gòu)中的文件內(nèi) 容,或者獲取部分目錄分支下的文件。本實(shí)施例后續(xù)以服務(wù)器獲取全部文件目錄結(jié)構(gòu)中的 文件內(nèi)容為例進(jìn)行說(shuō)明。
[0031] 103、根據(jù)拆分配置文件中的拆分配置信息對(duì)原代碼庫(kù)的代碼文件進(jìn)行拆分,獲得 多個(gè)目標(biāo)代碼庫(kù)。
[0032] 拆分配置信息中定義了將原代碼庫(kù)拆分成哪幾個(gè)目標(biāo)代碼庫(kù),以及將原代碼庫(kù)中 哪些代碼文件拆分到哪個(gè)目標(biāo)代碼庫(kù)中的相關(guān)信息。服務(wù)器根據(jù)拆分配置信息將原代碼庫(kù) 的代碼文件拆分為多個(gè)代碼文件集合,即獲得多個(gè)目標(biāo)代碼庫(kù)。
[0033] 104、將目標(biāo)代碼庫(kù)推送給拆分配置文件指定的服務(wù)器。
[0034] 拆分配置文件中記錄有指定服務(wù)器的服務(wù)器地址,以及指定服務(wù)器與目標(biāo)代碼庫(kù) 的對(duì)應(yīng)關(guān)系,服務(wù)器根據(jù)拆分配置文件中的指定信息,將各個(gè)目標(biāo)代碼庫(kù)推送到指定的服 務(wù)器中。
[0035] 實(shí)際應(yīng)用中,可以根據(jù)服務(wù)器的負(fù)載需求將所有目標(biāo)代碼庫(kù)推送到原代碼庫(kù)所在 的服務(wù)器中,也可以將所有目標(biāo)代碼庫(kù)推送到一個(gè)新的服務(wù)器中,還可以將不同的目標(biāo)代 碼庫(kù)推送到不同的服務(wù)器中,本實(shí)施例不對(duì)目標(biāo)代碼庫(kù)與服務(wù)器之間的對(duì)應(yīng)關(guān)系進(jìn)行限 制。
[0036] 本實(shí)施例提供的代碼庫(kù)拆分的方法,能夠根據(jù)拆分配置文件中的原代碼庫(kù)信息獲 取作為拆分對(duì)象的代碼文件,通過(guò)拆分配置信息將代碼文件拆分為不同的目標(biāo)代碼庫(kù),并 將目標(biāo)代碼庫(kù)推送到相應(yīng)的服務(wù)器中。與現(xiàn)有技術(shù)相比,代碼文件的查找、拆分、推送等過(guò) 程全部通過(guò)對(duì)拆分配置文件的執(zhí)行自動(dòng)實(shí)現(xiàn),無(wú)需人工操作參與,因此本實(shí)施例能夠提高 代碼庫(kù)的拆分效率。
[0037] 此外,由于拆分配置文件的擴(kuò)展性較強(qiáng),操作人員能夠方便的設(shè)定其中的各項(xiàng)信 息,因此本實(shí)施例提供的代碼庫(kù)拆分的方法還可以靈活的調(diào)整代碼庫(kù)的拆分需求。
[0038] 第三,本實(shí)施例提供的代碼庫(kù)拆分的方法是由服務(wù)器通過(guò)執(zhí)行拆分配置文件完成 的,拆分過(guò)程全部由計(jì)算機(jī)自動(dòng)執(zhí)行,與人工手動(dòng)拆分代碼庫(kù)相比,能夠有效規(guī)避因錯(cuò)分、 漏分等原因產(chǎn)生的拆分風(fēng)險(xiǎn)。
[0039] 進(jìn)一步的,作為對(duì)圖1所示方法的細(xì)化,本發(fā)明實(shí)施例還提供了一種代碼庫(kù)拆分的 方法,如圖2所示,該方法包括:
[0040] 201、讀取預(yù)設(shè)的拆分配置文件。
[0041] 本實(shí)施例中,拆分配置文件被配置在服務(wù)器中的某個(gè)預(yù)設(shè)存儲(chǔ)路徑下,在需要拆 分代碼庫(kù)時(shí),啟動(dòng)代碼庫(kù)拆分進(jìn)程,按照該存儲(chǔ)路徑讀取拆分配置文件,對(duì)其進(jìn)行解析和執(zhí) 行。
[0042] 在本實(shí)施例的一種實(shí)現(xiàn)方式中,為保證能夠按照最新的拆分需求進(jìn)行代碼庫(kù)拆 分,服務(wù)器在讀取拆分配置文件時(shí),還可以對(duì)拆分配置文件的版本進(jìn)行驗(yàn)證,選取最新版本 的拆分配置文件予以執(zhí)行。具體的,當(dāng)存儲(chǔ)路徑下保保存有不同版本的拆分配置文件時(shí),月艮 務(wù)器可以選取版本號(hào)最新的拆分配置文件。當(dāng)存儲(chǔ)路徑下僅保存最新版本的拆分配置文件 時(shí),即服務(wù)器是以文件替換的形式進(jìn)行拆分配置文件的更新時(shí),服務(wù)器直接讀取保存的拆 分配置文件即可。
[0043] 進(jìn)一步的,考慮到不同代碼庫(kù)的拆分需求有所差異,或者即使針對(duì)一個(gè)代碼庫(kù)也 有可能存在不同的拆分需求,在本實(shí)施例的另一種實(shí)現(xiàn)方式中,服務(wù)器可以保存有對(duì)應(yīng)不 同代碼庫(kù)的多個(gè)拆分配置文件,或者對(duì)應(yīng)一個(gè)代碼庫(kù)的不同拆分需求的多個(gè)拆分配置文 件。在讀取拆分配置文件時(shí),代碼庫(kù)拆分進(jìn)程通過(guò)人機(jī)交互界面獲取外部輸入的拆分需求 或配置文件名稱,然后根據(jù)拆分需求或配置文件名稱選取本次拆分過(guò)程所需的拆分配置文 件。
[0044] 202、根據(jù)原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址中的一項(xiàng)或至少兩項(xiàng)的組 合,查找原代碼庫(kù)。
[0045] 服務(wù)器從拆分配置文件中解析出用于"鎖定"原代碼庫(kù)的原代碼庫(kù)信息,并根據(jù)該 原代碼庫(kù)信息查找原代碼庫(kù)。
[0046] 在本實(shí)施例的一種實(shí)現(xiàn)方式中,原代碼庫(kù)信息可以包含下述至少一種信息:原代 碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址。其中原代碼庫(kù)名稱是在建立原代碼庫(kù)時(shí)人工或 計(jì)算機(jī)分配的名稱,在代碼庫(kù)管理過(guò)程中,應(yīng)當(dāng)保證不同代碼庫(kù)的名稱唯一無(wú)重復(fù);原代碼 庫(kù)標(biāo)識(shí)具體可以是預(yù)先為代碼庫(kù)分配的身份標(biāo)識(shí)(IDentity,簡(jiǎn)稱ID),或通過(guò)哈希算法 (HASH)分配的哈希值,或者通過(guò)偽隨機(jī)數(shù)生成函數(shù)分配的偽隨機(jī)數(shù),其中,哈希值和偽隨機(jī) 數(shù)的生成機(jī)制能夠保證其唯一不重復(fù),ID的分配則需要通過(guò)一定機(jī)制保證其唯一性;原代 碼庫(kù)地址主要是指原代碼庫(kù)在服務(wù)器中的邏輯地址,例如可是存儲(chǔ)路徑(需要保證不同的 原代碼庫(kù)的存儲(chǔ)路徑?jīng)]有重復(fù)),當(dāng)原代碼庫(kù)與其所部署的服務(wù)器之間存在一一映射的關(guān) 系時(shí),也可以使用服務(wù)器的物理/邏輯地址作為原代碼庫(kù)的地址使用。
[0047] 對(duì)于原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址,其中任意一者均能夠單獨(dú)作 為原代碼庫(kù)信息使用,實(shí)際應(yīng)用中為避免小概率的重復(fù)事件,也可以使用其中任意兩者或 三者的組合作為原代碼庫(kù)信息使用。
[0048] 服務(wù)器中配置有原代碼庫(kù)信息與原代碼庫(kù)存儲(chǔ)路徑的映射關(guān)系表,在獲得原代碼 庫(kù)信息后,服務(wù)器查表確定原代碼庫(kù)的存儲(chǔ)路徑,通過(guò)該存儲(chǔ)路徑獲取到原代碼庫(kù)。當(dāng)原代 碼庫(kù)位于其他服務(wù)器中時(shí),該映射關(guān)系表的存儲(chǔ)路徑部分至少還應(yīng)當(dāng)寫有原代碼庫(kù)所在服 務(wù)器的地址信息,以便本服務(wù)器能夠與其進(jìn)行通信,獲取原代碼庫(kù)。在分布式系統(tǒng)中,應(yīng)當(dāng) 定期同步各服務(wù)器中的上述映射關(guān)系表。
[0049] 203、讀取原代碼庫(kù)中的代碼文件。
[0050] 在獲取到原代碼庫(kù)后,服務(wù)器按照其數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)讀取其中的代碼文件。所謂數(shù) 據(jù)存儲(chǔ)結(jié)構(gòu)即為前述所指的文件目錄結(jié)構(gòu)。服務(wù)器可以從文件目錄結(jié)構(gòu)的頂層文件夾起始 向下進(jìn)行數(shù)據(jù)遍歷,獲取各級(jí)節(jié)點(diǎn)上的代碼文件,以及代碼文件之間的上下級(jí)從屬關(guān)系。
[0051] 204、在原代碼庫(kù)中查找與上游代碼模塊名稱對(duì)應(yīng)的文件目錄分支。
[0052] 在獲取到原代碼庫(kù)的代碼文件后,服務(wù)器執(zhí)行本步驟,從拆分配置文件中解析出 拆分配置信息。該拆分配置信息包括多個(gè)上游代碼模塊名稱,每一個(gè)上游代碼模塊名稱對(duì) 應(yīng)原代碼庫(kù)中的一個(gè)文件目錄分支。通過(guò)設(shè)置上游代碼模塊名稱的方式表達(dá)對(duì)原代碼庫(kù)的 文件目錄結(jié)構(gòu)的拆分需求,即需要將文件目錄結(jié)構(gòu)拆分成哪幾個(gè)分支(以便后續(xù)分別導(dǎo)入 到不同的目標(biāo)代碼庫(kù)中)。
[0053]在本實(shí)施例的一種實(shí)現(xiàn)方式中,可以通過(guò)將文件目錄分支名稱設(shè)為上游代碼模塊 名稱的方式,建立上游代碼模塊名稱與文件目錄分支的對(duì)應(yīng)關(guān)系。示例性的,假設(shè)在原代碼 庫(kù)的文件目錄結(jié)構(gòu)中,頂層文件夾"TOP"的下一級(jí)包含三個(gè)子文件夾"A"、"B"和"C",其中, 子文件夾"A"的下一級(jí)又包含"Γ和"2"兩個(gè)二級(jí)子文件夾,子文件夾"B"的下一級(jí)又包含 "3"、"4"、"5"和"6"四個(gè)二級(jí)子文件夾,子文件夾"C"的下一級(jí)又包含"7" 一個(gè)二級(jí)子文件 夾。如果需要將代碼庫(kù)按照子文件夾"A"、"B"和"(Τ'三個(gè)文件目錄分支拆分為三個(gè)目標(biāo)代碼 庫(kù),那么可以在拆分配置文件的拆分配置信息中,設(shè)置三個(gè)上游代碼模塊名稱(表示將原代 碼庫(kù)拆分為三個(gè)文件目錄分支),并且將這三個(gè)上游代碼模塊名稱分別設(shè)置為"A"、"Β"和 "C"。由此,服務(wù)器在執(zhí)行拆分配置文件時(shí),就可以根據(jù)不同的上游代碼模塊名稱查找到對(duì) 應(yīng)的文件目錄分支了。
[0054] 205、將文件目錄分支下的代碼文件拆分到與上游代碼模塊名稱對(duì)應(yīng)的拆分模塊 名稱下,獲得對(duì)應(yīng)拆分模塊名稱的目標(biāo)代碼庫(kù)。
[0055] 除上游代碼模塊名稱以外,拆分配置信息中還包括與上游代碼模塊名稱對(duì)應(yīng)的拆 分模塊名稱。拆分模塊名稱的數(shù)量與目標(biāo)代碼庫(kù)的數(shù)量相同,通過(guò)設(shè)置拆分模塊名稱的數(shù) 量,可以定義目標(biāo)代碼庫(kù)的數(shù)量。
[0056] 拆分模塊名稱除了需要與目標(biāo)代碼庫(kù)對(duì)應(yīng)以外,還需要與上游代碼模塊名稱對(duì) 應(yīng),以便建立不同文件目錄分支與不同目標(biāo)代碼庫(kù)之間的對(duì)應(yīng)關(guān)系。需要注意的是,拆分模 塊名稱與目標(biāo)代碼庫(kù)之間是一一對(duì)應(yīng)的關(guān)系,上游代碼模塊名稱與文件目錄分支之間也是 一一對(duì)應(yīng)的關(guān)系,但是拆分模塊名稱與上游代碼模塊名稱并不一定是一一對(duì)應(yīng)的關(guān)系。這 是由于,實(shí)際應(yīng)用中可以將不同文件目錄分支的代碼文件導(dǎo)入到一個(gè)目標(biāo)代碼庫(kù)中,也可 以將一個(gè)文件目錄分支的代碼文件分別導(dǎo)入到不同的目標(biāo)代碼庫(kù)中。本實(shí)施例中,拆分模 塊名稱與上游代碼模塊名稱兩者在數(shù)量上可以相等也可以不相等,本實(shí)施例對(duì)此不作嚴(yán)格 限制。
[0057] 為便于理解,本實(shí)施例通過(guò)下述符號(hào)化關(guān)系對(duì)上述表述進(jìn)行簡(jiǎn)化:
[0058] Η=原代碼庫(kù)中的文件目錄分支數(shù)量;
[0059] 1 =上游代碼模塊名稱數(shù)量;
[0060] J =拆分模塊名稱數(shù)量;
[0061 ] K =目標(biāo)代碼庫(kù)數(shù)量。
[0062]上述四者之間關(guān)系如下:
[0063] K
[0064] 其中,符號(hào)表示一一對(duì)應(yīng)關(guān)系,符號(hào)"―"表示數(shù)量不定的一對(duì)多、多對(duì)一或 多對(duì)多的對(duì)應(yīng)關(guān)系。
[0065] 在拆分配置文件中,通過(guò)對(duì)上游代碼模塊的名稱和數(shù)量的設(shè)置,可以確定需要拆 分出哪些文件目錄分支的代碼文件;通過(guò)對(duì)拆分模塊的名稱和數(shù)量的設(shè)置,可以確定將原 代碼庫(kù)拆分為哪些目標(biāo)代碼庫(kù);而對(duì)上游代碼模塊名稱和拆分模塊名稱之間的對(duì)應(yīng)關(guān)系的 設(shè)置,則可以確定將哪些文件目錄分支的代碼文件拆分到哪些目標(biāo)代碼庫(kù)中。
[0066] 206、將目標(biāo)代碼庫(kù)推送給與拆分模塊名稱對(duì)應(yīng)的服務(wù)器地址。
[0067] 拆分配置文件中記錄有部署目標(biāo)代碼庫(kù)的服務(wù)器地址的指定信息,該指定信息不 僅記錄了部署目標(biāo)代碼庫(kù)的服務(wù)器地址,還記錄了服務(wù)器地址與拆分模塊名稱的對(duì)應(yīng)關(guān) 系。服務(wù)器將目標(biāo)代碼庫(kù)推送給與拆分模塊名稱對(duì)應(yīng)的服務(wù)器地址,該拆分模塊名稱為對(duì) 應(yīng)目標(biāo)代碼庫(kù)的拆分模塊名稱。
[0068] 本實(shí)施例中,可以將不同的目標(biāo)代碼庫(kù)推送給不同的服務(wù)器,也可以將部分或全 部目標(biāo)代碼庫(kù)推送給同一個(gè)服務(wù)器。
[0069] 在執(zhí)行步驟206之后,就完成了對(duì)原代碼庫(kù)的拆分以及對(duì)新代碼庫(kù)的部署。
[0070] 進(jìn)一步的,在本實(shí)施例的一種改進(jìn)方案中,當(dāng)因各種原因?qū)е律嫌未a模塊名稱 與原代碼庫(kù)中的文件目錄分支不對(duì)應(yīng)時(shí),可以將原代碼庫(kù)中的代碼文件整體推送給預(yù)設(shè)的 服務(wù)器。實(shí)際應(yīng)用中,開(kāi)發(fā)人員可能會(huì)依據(jù)舊版本的文件目錄結(jié)構(gòu)編寫上游代碼模塊名稱, 而在拆分原代碼庫(kù)時(shí),原代碼庫(kù)當(dāng)前的文件目錄結(jié)構(gòu)為更新后的目錄結(jié)構(gòu),由此導(dǎo)致拆分 配置文件中的上游代碼模塊名稱與原代碼庫(kù)中的文件目錄分支不相對(duì)應(yīng)?;蛘撸_(kāi)發(fā)人員 在編寫上游代碼模塊名稱時(shí)所依據(jù)的文件目錄結(jié)構(gòu)是最新版本的,但是在拆分原代碼庫(kù) 時(shí),原代碼庫(kù)的文件目錄結(jié)構(gòu)發(fā)生了改變,這種情形也會(huì)導(dǎo)致上述問(wèn)題的產(chǎn)生。由于上游代 碼模塊名稱與文件目錄分支不相對(duì)應(yīng),因此無(wú)法按照既定的拆分需求獲得目標(biāo)代碼庫(kù)。此 時(shí),可以將原代碼庫(kù)中的所有代碼文件全部推送給預(yù)設(shè)的服務(wù)器,即將整個(gè)文件目錄結(jié)構(gòu) 中的所有代碼文件全部推送給預(yù)設(shè)的服務(wù)器,以便在修改拆分需求之后,或者在原代碼庫(kù) 的文件目錄結(jié)構(gòu)改變之后,再做代碼庫(kù)的拆分。
[0071] 本實(shí)施例所述的上游代碼模塊名稱與原代碼庫(kù)中文件目錄分支不對(duì)應(yīng),包括上游 代碼模塊名稱的數(shù)量與文件目錄分支的數(shù)量不一致,也包括上游代碼模塊名稱與文件目錄 分支的文件夾名稱不一致的情況。
[0072] 此外,實(shí)際應(yīng)用中的預(yù)設(shè)服務(wù)器可以是拆分配置文件中指定的服務(wù)器,也可以是 與指定服務(wù)器無(wú)關(guān)的其他服務(wù)器,本實(shí)施例對(duì)此不作限制。
[0073] 進(jìn)一步的,在本實(shí)施例的一個(gè)優(yōu)選方案中,服務(wù)器除了將代碼文件拆分到目標(biāo)代 碼庫(kù)中之外,還可以進(jìn)一步將原代碼庫(kù)中的代碼歷史信息一道同步給目標(biāo)代碼庫(kù)。所謂代 碼歷史信息是指,用于記錄代碼修改或代碼版本更新的歷史信息,代碼歷史信息是對(duì)代碼 進(jìn)行后續(xù)修改、調(diào)用或升級(jí)必不可少的參考依據(jù)?,F(xiàn)有技術(shù)中在對(duì)代碼庫(kù)進(jìn)行拆分時(shí),不會(huì) 將原代碼庫(kù)中的代碼歷史信息同步給新的代碼庫(kù),由此導(dǎo)致新代碼庫(kù)中的代碼再被修改、 調(diào)用或升級(jí)時(shí),無(wú)法繼承其早先在原代碼庫(kù)中的變動(dòng)歷史,因而對(duì)開(kāi)發(fā)人員后續(xù)的使用造 成困難。本實(shí)施例中,服務(wù)器會(huì)將代碼歷史信息同步給目標(biāo)代碼庫(kù),能夠?qū)崿F(xiàn)代碼文件與代 碼歷史信息的完整"過(guò)渡",消除代碼變動(dòng)歷史在代碼庫(kù)拆分過(guò)程中的"斷層",方便開(kāi)發(fā)人 員基于代碼在原代碼庫(kù)中的歷史信息,在目標(biāo)代碼庫(kù)中對(duì)代碼進(jìn)行修改、調(diào)用或升級(jí)。
[0074] 實(shí)際應(yīng)用中,上述圖1及圖2所示方法適用于對(duì)release代碼庫(kù)或迭代代碼庫(kù)進(jìn)行 拆分,但并不限定于此。
[0075] 為更好的對(duì)圖2所示的方法進(jìn)行理解,下面舉例對(duì)本發(fā)明中的代碼庫(kù)拆分過(guò)程進(jìn) 行說(shuō)明。應(yīng)當(dāng)明確這種說(shuō)明僅是示例性的,其中涉及的參數(shù)數(shù)值及參數(shù)數(shù)量等具體內(nèi)容不 作為對(duì)實(shí)際應(yīng)用的限制。
[0076] 在該示例中,預(yù)設(shè)的拆分配置文件包括下述內(nèi)容:
[0077] a#GitModuleNmae ;GitHashValue ;GitRUL
[0078] remote-git;adsp;d36b1917fll885fd8e84531339Ibc61bc787bbaa;https://chip master2.qti.qualcomm.com/home2/git/msm-la-1-0_hex6_oem
[0079] remote-git;amss;ecd9bl95b5fldd508bl886bec23db2759c0alea4;https://chip master2.qti.qualcomm.com/home2/git/msm-la-1-0_amss_oem_milestone-standard-m
[0080] remote_git;binary;;https ://chipmaster2.qti. qua1comm.com/home2/git/ msm-la-1-0-test-device-milestone-m.git
[0081 ] remote_git ; cnss ; ; https: //chipmaster2. qti . qualcomm. com/home2/git/msm-la-1-O-amss_oem-cnss-wapi.git
[0082] #GitModulelist
[0083] MODULE-LIST-DEFAULT: "adsp-proc btfm-proc boot-images cnss-proc common cpe_proc modem-proc LINUX/android/vendor/qcom/proprietary rpm_proc slpi-proc trustzone_images venus-proc wgig-proc〃
[0084] #TargetServer
[0085] Down 1 oad-DIR=MSS
[0086] DownloadCMD = 〃repo init-u server://letv_url1-m letv/amss.xml-b master -repo-url = server: //letv-url2〃',
[0087] 其中,"GitModuleNmae;GitHashValue;GitRUL"定義了原代碼庫(kù)的名稱、哈希值和 代碼庫(kù)地址,用于查找拆分對(duì)象的原代碼庫(kù)。
[0088] "rem〇te_git"是一個(gè)標(biāo)記位,用于指示需要對(duì)原代碼庫(kù)進(jìn)行拆分。
[0089] "adsp"、"amss"、"binary"、"cnss"為上游代碼模塊名稱,與原代碼庫(kù)中的不同文 件目錄分支相對(duì)應(yīng)。
[0090] "GitModulelist" 中的 "adsp_proc"、"btfm-proc"、"boot_images"、"cnss_proc" 等為拆分模塊名稱,用于定義需要拆分出的目標(biāo)代碼庫(kù)。上游代碼模塊名稱與拆分模塊名 稱之間的對(duì)應(yīng)關(guān)系通過(guò)兩者的名稱進(jìn)行定義,例如上游代碼模塊名稱"adsp"與拆分模塊名 稱"adsp_proc"。而對(duì)于諸如拆分模塊名稱"btfm_proc"其中的"btfm"對(duì)應(yīng)上述某個(gè)文件目 錄分支中的下級(jí)目錄分支,即上述某個(gè)文件目錄分支中的某個(gè)下級(jí)文件夾的名稱,因此不 存在與其名稱一致的上游代碼模塊名稱。
[0091] "TargetServer"為部署目標(biāo)代碼庫(kù)的目標(biāo)服務(wù)器,其中記錄了目標(biāo)服務(wù)器的服務(wù) 器地址,在上述示例中將拆分模塊名稱"AMSS"對(duì)應(yīng)的目標(biāo)代碼庫(kù)推送到"DownloadCMD"下 的服務(wù)器地址。
[0092] 進(jìn)一步的,作為對(duì)上述圖1及圖2所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例還提供了一種代 碼庫(kù)拆分的裝置。該裝置可以位于原代碼庫(kù)所在的服務(wù)器上,也可以獨(dú)立于原代碼庫(kù)所在 的服務(wù)器,但是與原代碼庫(kù)之間建立有數(shù)據(jù)交互關(guān)系,用以實(shí)現(xiàn)上述圖1及圖2所示的方法。 如圖3所示,該裝置包括:讀取單元31、獲取單元32、拆分單元33以及推送單元3L其中,
[0093] 讀取單元31,用于讀取預(yù)設(shè)的拆分配置文件,拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行 拆分。
[0094] 原代碼庫(kù)中的代碼包括前端開(kāi)發(fā)、系統(tǒng)開(kāi)發(fā)、網(wǎng)站開(kāi)發(fā)等所有過(guò)程所涉及的代碼 內(nèi)容。以前端開(kāi)發(fā)為例,原代碼庫(kù)中包括的代碼不限于是組件代碼、控件代碼及窗體代碼。 本實(shí)施例不對(duì)原代碼庫(kù)中的代碼類型進(jìn)行限制。
[0095] 本實(shí)施例的目的在于通過(guò)拆分配置文件將原代碼庫(kù)拆分為多個(gè)新的代碼庫(kù)。該拆 分配置文件為根據(jù)預(yù)設(shè)拆分需求編寫的配置文件,其中包括用于指定原代碼庫(kù)的原代碼庫(kù) 信息、決定如何拆分代碼文件以獲得哪幾個(gè)目標(biāo)代碼庫(kù)的拆分配置信息、以及將目標(biāo)代碼 庫(kù)推送給哪個(gè)服務(wù)器的指定信息。拆分配置文件編寫完成后配置到原代碼庫(kù)所在的服務(wù)器 中,當(dāng)操作人員觸發(fā)代碼庫(kù)拆分指令時(shí),讀取并解析拆分配置文件,按照拆分配置文件中的 參數(shù)對(duì)原代碼庫(kù)進(jìn)行拆分。實(shí)際應(yīng)用中,當(dāng)拆分需求發(fā)生變化時(shí),可以對(duì)拆分配置文件進(jìn)行 修改,然后重啟服務(wù)器使新的拆分配置文件生效。本實(shí)施例中,拆分配置文件的格式包括但 不限于是XML格式及腳本格式。
[0096] 獲取單元32,用于根據(jù)拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文 件。
[0097] 通常一臺(tái)服務(wù)器中可以僅部署一個(gè)代碼庫(kù),也可以部署多個(gè)代碼庫(kù);而在虛擬機(jī) 環(huán)境中,由于服務(wù)器中的每一個(gè)虛擬機(jī)都可以部署一個(gè)或多個(gè)代碼庫(kù),因此單臺(tái)服務(wù)器上 的代碼庫(kù)數(shù)量有可能會(huì)更多。為實(shí)現(xiàn)對(duì)作為拆分對(duì)象的原代碼庫(kù)的準(zhǔn)確查找,本實(shí)施例在 拆分配置文件中設(shè)置了原代碼庫(kù)信息,通過(guò)原代碼庫(kù)信息可以定位查找到原代碼庫(kù)。拆分 配置文件中可以記錄一個(gè)原代碼庫(kù)的原代碼庫(kù)信息,也可以記錄多個(gè)原代碼庫(kù)的原代碼庫(kù) 信息。當(dāng)實(shí)現(xiàn)方式為后者時(shí),可以一次對(duì)部署在自身的多個(gè)原代碼庫(kù)分別進(jìn)行拆分。實(shí)際應(yīng) 用中,一切能夠?qū)υa庫(kù)進(jìn)行唯一標(biāo)識(shí)的信息均可以用作原代碼庫(kù)信息,本實(shí)施例不對(duì) 原代碼庫(kù)信息的具體形式進(jìn)行限制。
[0098] 在根據(jù)原代碼庫(kù)信息查找到原代碼庫(kù)后,獲取原代碼庫(kù)中的代碼文件,即上述文 件目錄結(jié)構(gòu)中的內(nèi)容。可以根據(jù)實(shí)際需求獲取全部文件目錄結(jié)構(gòu)中的文件內(nèi)容,或者獲取 部分目錄分支下的文件。本實(shí)施例后續(xù)以獲取全部文件目錄結(jié)構(gòu)中的文件內(nèi)容為例進(jìn)行說(shuō) 明。
[0099] 拆分單元33,用于根據(jù)拆分配置文件中的拆分配置信息對(duì)原代碼庫(kù)的代碼文件進(jìn) 行拆分,獲得多個(gè)目標(biāo)代碼庫(kù)。
[0100] 拆分配置信息中定義了將原代碼庫(kù)拆分成哪幾個(gè)目標(biāo)代碼庫(kù),以及將原代碼庫(kù)中 哪些代碼文件拆分到哪個(gè)目標(biāo)代碼庫(kù)中的相關(guān)信息。根據(jù)拆分配置信息將原代碼庫(kù)的代碼 文件拆分為多個(gè)代碼文件集合,即獲得多個(gè)目標(biāo)代碼庫(kù)。
[0101] 推送單元34,用于將目標(biāo)代碼庫(kù)推送給拆分配置文件指定的服務(wù)器。
[0102] 拆分配置文件中記錄有指定服務(wù)器的服務(wù)器地址,以及指定服務(wù)器與目標(biāo)代碼庫(kù) 的對(duì)應(yīng)關(guān)系,根據(jù)拆分配置文件中的指定信息,將各個(gè)目標(biāo)代碼庫(kù)推送到指定的服務(wù)器中。
[0103] 實(shí)際應(yīng)用中,可以根據(jù)服務(wù)器的負(fù)載需求將所有目標(biāo)代碼庫(kù)推送到原代碼庫(kù)所在 的服務(wù)器中,也可以將所有目標(biāo)代碼庫(kù)推送到一個(gè)新的服務(wù)器中,還可以將不同的目標(biāo)代 碼庫(kù)推送到不同的服務(wù)器中,本實(shí)施例不對(duì)目標(biāo)代碼庫(kù)與服務(wù)器之間的對(duì)應(yīng)關(guān)系進(jìn)行限 制。
[0104] 進(jìn)一步的,原代碼庫(kù)信息包含下述至少一種信息。
[0105] 原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址。
[0106] 如圖4所示,獲取單元32,包括:
[0107] 原代碼庫(kù)查找模塊321,用于根據(jù)原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址中 的一項(xiàng)或至少兩項(xiàng)的組合,查找原代碼庫(kù)。
[0108] 讀取模塊322,用于讀取原代碼庫(kù)中的代碼文件。
[0109] 在本實(shí)施例的一種實(shí)現(xiàn)方式中,原代碼庫(kù)信息可以包含下述至少一種信息:原代 碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址。其中原代碼庫(kù)名稱是在建立原代碼庫(kù)時(shí)人工或 計(jì)算機(jī)分配的名稱,在代碼庫(kù)管理過(guò)程中,應(yīng)當(dāng)保證不同代碼庫(kù)的名稱唯一無(wú)重復(fù);原代碼 庫(kù)標(biāo)識(shí)具體可以是預(yù)先為代碼庫(kù)分配的ID,或通過(guò)哈希算法分配的哈希值,或者通過(guò)偽隨 機(jī)數(shù)生成函數(shù)分配的偽隨機(jī)數(shù),其中,哈希值和偽隨機(jī)數(shù)的生成機(jī)制能夠保證其唯一不重 復(fù),ID的分配則需要通過(guò)一定機(jī)制保證其唯一性;原代碼庫(kù)地址主要是指原代碼庫(kù)在服務(wù) 器中的邏輯地址,例如可是存儲(chǔ)路徑(需要保證不同的原代碼庫(kù)的存儲(chǔ)路徑?jīng)]有重復(fù)),當(dāng) 原代碼庫(kù)與其所部署的服務(wù)器之間存在一一映射的關(guān)系時(shí),也可以使用服務(wù)器的物理/邏 輯地址作為原代碼庫(kù)的地址使用。
[0110] 對(duì)于原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址,其中任意一者均能夠單獨(dú)作 為原代碼庫(kù)信息使用,實(shí)際應(yīng)用中為避免小概率的重復(fù)事件,也可以使用其中任意兩者或 三者的組合作為原代碼庫(kù)信息使用。
[0111] 服務(wù)器中配置有原代碼庫(kù)信息與原代碼庫(kù)存儲(chǔ)路徑的映射關(guān)系表,在獲得原代碼 庫(kù)信息后,查表確定原代碼庫(kù)的存儲(chǔ)路徑,通過(guò)該存儲(chǔ)路徑獲取到原代碼庫(kù)。當(dāng)原代碼庫(kù)位 于其他服務(wù)器中時(shí),該映射關(guān)系表的存儲(chǔ)路徑部分至少還應(yīng)當(dāng)寫有原代碼庫(kù)所在服務(wù)器的 地址信息,以便本服務(wù)器能夠與其進(jìn)行通信,獲取原代碼庫(kù)。在分布式系統(tǒng)中,應(yīng)當(dāng)定期同 步各服務(wù)器中的上述映射關(guān)系表。
[0112] 在獲取到原代碼庫(kù)后,按照其數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)讀取其中的代碼文件。所謂數(shù)據(jù)存儲(chǔ) 結(jié)構(gòu)即為前述所指的文件目錄結(jié)構(gòu)??梢詮奈募夸浗Y(jié)構(gòu)的頂層文件夾起始向下進(jìn)行數(shù)據(jù) 遍歷,獲取各級(jí)節(jié)點(diǎn)上的代碼文件,以及代碼文件之間的上下級(jí)從屬關(guān)系。
[0113] 進(jìn)一步的,拆分配置信息包括與原代碼庫(kù)中文件目錄分支相對(duì)應(yīng)的上游代碼模塊 名稱,以及與上游代碼模塊名稱對(duì)應(yīng)的拆分模塊名稱。
[0114] 如圖4所示,拆分單元33,包括:
[0115] 文件目錄分支查找模塊331,用于在原代碼庫(kù)中查找與上游代碼模塊名稱對(duì)應(yīng)的 文件目錄分支。
[0116]拆分模塊332,用于將文件目錄分支下的代碼文件拆分到與上游代碼模塊名稱對(duì) 應(yīng)的拆分模塊名稱下,獲得對(duì)應(yīng)拆分模塊名稱的目標(biāo)代碼庫(kù)。
[0117] 在獲取到原代碼庫(kù)的代碼文件后,從拆分配置文件中解析出拆分配置信息。該拆 分配置信息包括多個(gè)上游代碼模塊名稱,每一個(gè)上游代碼模塊名稱對(duì)應(yīng)原代碼庫(kù)中的一個(gè) 文件目錄分支。通過(guò)設(shè)置上游代碼模塊名稱的方式表達(dá)對(duì)原代碼庫(kù)的文件目錄結(jié)構(gòu)的拆分 需求,即需要將文件目錄結(jié)構(gòu)拆分成哪幾個(gè)分支(以便后續(xù)分別導(dǎo)入到不同的目標(biāo)代碼庫(kù) 中)。
[0118] 在本實(shí)施例的一種實(shí)現(xiàn)方式中,可以通過(guò)將文件目錄分支名稱設(shè)為上游代碼模塊 名稱的方式,建立上游代碼模塊名稱與文件目錄分支的對(duì)應(yīng)關(guān)系。
[0119] 除上游代碼模塊名稱以外,拆分配置信息中還包括與上游代碼模塊名稱對(duì)應(yīng)的拆 分模塊名稱。拆分模塊名稱的數(shù)量與目標(biāo)代碼庫(kù)的數(shù)量相同,通過(guò)設(shè)置拆分模塊名稱的數(shù) 量,可以定義目標(biāo)代碼庫(kù)的數(shù)量。
[0120]拆分模塊名稱除了需要與目標(biāo)代碼庫(kù)對(duì)應(yīng)以外,還需要與上游代碼模塊名稱對(duì) 應(yīng),以便建立不同文件目錄分支與不同目標(biāo)代碼庫(kù)之間的對(duì)應(yīng)關(guān)系。需要注意的是,拆分模 塊名稱與目標(biāo)代碼庫(kù)之間是一一對(duì)應(yīng)的關(guān)系,上游代碼模塊名稱與文件目錄分支之間也是 一一對(duì)應(yīng)的關(guān)系,但是拆分模塊名稱與上游代碼模塊名稱并不一定是一一對(duì)應(yīng)的關(guān)系。這 是由于,實(shí)際應(yīng)用中可以將不同文件目錄分支的代碼文件導(dǎo)入到一個(gè)目標(biāo)代碼庫(kù)中,也可 以將一個(gè)文件目錄分支的代碼文件分別導(dǎo)入到不同的目標(biāo)代碼庫(kù)中。本實(shí)施例中,拆分模 塊名稱與上游代碼模塊名稱兩者在數(shù)量上可以相等也可以不相等,本實(shí)施例對(duì)此不作嚴(yán)格 限制。
[0121 ]進(jìn)一步的,推送單元34,用于將目標(biāo)代碼庫(kù)推送給與拆分模塊名稱對(duì)應(yīng)的服務(wù)器 地址。
[0122] 拆分配置文件中記錄有部署目標(biāo)代碼庫(kù)的服務(wù)器地址的指定信息,該指定信息不 僅記錄了部署目標(biāo)代碼庫(kù)的服務(wù)器地址,還記錄了服務(wù)器地址與拆分模塊名稱的對(duì)應(yīng)關(guān) 系。將目標(biāo)代碼庫(kù)推送給與拆分模塊名稱對(duì)應(yīng)的服務(wù)器地址,該拆分模塊名稱為對(duì)應(yīng)目標(biāo) 代碼庫(kù)的拆分模塊名稱。
[0123] 本實(shí)施例中,可以將不同的目標(biāo)代碼庫(kù)推送給不同的服務(wù)器,也可以將部分或全 部目標(biāo)代碼庫(kù)推送給同一個(gè)服務(wù)器。
[0124] 進(jìn)一步的,推送單元34,用于若上游代碼模塊名稱與原代碼庫(kù)中文件目錄分支不 對(duì)應(yīng),則將原代碼庫(kù)中的代碼文件整體推送給預(yù)設(shè)的服務(wù)器。
[0125] 當(dāng)因各種原因?qū)е律嫌未a模塊名稱與原代碼庫(kù)中的文件目錄分支不對(duì)應(yīng)時(shí),可 以將原代碼庫(kù)中的代碼文件整體推送給預(yù)設(shè)的服務(wù)器。實(shí)際應(yīng)用中,開(kāi)發(fā)人員可能會(huì)依據(jù) 舊版本的文件目錄結(jié)構(gòu)編寫上游代碼模塊名稱,而在拆分原代碼庫(kù)時(shí),原代碼庫(kù)當(dāng)前的文 件目錄結(jié)構(gòu)為更新后的目錄結(jié)構(gòu),由此導(dǎo)致拆分配置文件中的上游代碼模塊名稱與原代碼 庫(kù)中的文件目錄分支不相對(duì)應(yīng)?;蛘?,開(kāi)發(fā)人員在編寫上游代碼模塊名稱時(shí)所依據(jù)的文件 目錄結(jié)構(gòu)是最新版本的,但是在拆分原代碼庫(kù)時(shí),原代碼庫(kù)的文件目錄結(jié)構(gòu)發(fā)生了改變,這 種情形也會(huì)導(dǎo)致上述問(wèn)題的產(chǎn)生。由于上游代碼模塊名稱與文件目錄分支不相對(duì)應(yīng),因此 無(wú)法按照既定的拆分需求獲得目標(biāo)代碼庫(kù)。此時(shí),可以將原代碼庫(kù)中的所有代碼文件全部 推送給預(yù)設(shè)的服務(wù)器,即將整個(gè)文件目錄結(jié)構(gòu)中的所有代碼文件全部推送給預(yù)設(shè)的服務(wù) 器,以便在修改拆分需求之后,或者在原代碼庫(kù)的文件目錄結(jié)構(gòu)改變之后,再做代碼庫(kù)的拆 分。
[0126] 進(jìn)一步的,如圖4所示,該裝置進(jìn)一步包括:
[0127] 同步單元35,用于將原代碼庫(kù)的代碼歷史信息同步到目標(biāo)代碼庫(kù)中。
[0128] 除了將代碼文件拆分到目標(biāo)代碼庫(kù)中之外,還可以進(jìn)一步將原代碼庫(kù)中的代碼歷 史信息一道同步給目標(biāo)代碼庫(kù)。所謂代碼歷史信息是指,用于記錄代碼修改或代碼版本更 新的歷史信息,代碼歷史信息是對(duì)代碼進(jìn)行后續(xù)修改、調(diào)用或升級(jí)必不可少的參考依據(jù)?,F(xiàn) 有技術(shù)中在對(duì)代碼庫(kù)進(jìn)行拆分時(shí),不會(huì)將原代碼庫(kù)中的代碼歷史信息同步給新的代碼庫(kù), 由此導(dǎo)致新代碼庫(kù)中的代碼再被修改、調(diào)用或升級(jí)時(shí),無(wú)法繼承其早先在原代碼庫(kù)中的變 動(dòng)歷史,因而對(duì)開(kāi)發(fā)人員后續(xù)的使用造成困難。本實(shí)施例中,會(huì)將代碼歷史信息同步給目標(biāo) 代碼庫(kù),能夠?qū)崿F(xiàn)代碼文件與代碼歷史信息的完整"過(guò)渡",消除代碼變動(dòng)歷史在代碼庫(kù)拆 分過(guò)程中的"斷層",方便開(kāi)發(fā)人員基于代碼在原代碼庫(kù)中的歷史信息,在目標(biāo)代碼庫(kù)中對(duì) 代碼進(jìn)行修改、調(diào)用或升級(jí)。
[0129]本實(shí)施例提供的代碼庫(kù)拆分的裝置,能夠根據(jù)拆分配置文件中的原代碼庫(kù)信息獲 取作為拆分對(duì)象的代碼文件,通過(guò)拆分配置信息將代碼文件拆分為不同的目標(biāo)代碼庫(kù),并 將目標(biāo)代碼庫(kù)推送到相應(yīng)的服務(wù)器中。與現(xiàn)有技術(shù)相比,代碼文件的查找、拆分、推送等過(guò) 程全部通過(guò)對(duì)拆分配置文件的執(zhí)行自動(dòng)實(shí)現(xiàn),無(wú)需人工操作參與,因此本實(shí)施例能夠提高 代碼庫(kù)的拆分效率。
[0130]此外,由于拆分配置文件的擴(kuò)展性較強(qiáng),操作人員能夠方便的設(shè)定其中的各項(xiàng)信 息,因此本實(shí)施例提供的代碼庫(kù)拆分的裝置還可以靈活的調(diào)整代碼庫(kù)的拆分需求。
[0131] 第三,本實(shí)施例是通過(guò)代碼庫(kù)拆分的裝置執(zhí)行拆分配置文件自動(dòng)完成的,拆分過(guò) 程全部由計(jì)算機(jī)自動(dòng)執(zhí)行,與人工手動(dòng)拆分代碼庫(kù)相比,能夠有效規(guī)避因錯(cuò)分、漏分等原因 產(chǎn)生的拆分風(fēng)險(xiǎn)。
[0132] 以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可 以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單 元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其 中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性 的勞動(dòng)的情況下,即可以理解并實(shí)施。
[0133] 通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可 借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件。基于這樣的理解,上 述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該 計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指 令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施 例或者實(shí)施例的某些部分所述的方法。
[0134] 最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管 參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可 以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換; 而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和 范圍。
【主權(quán)項(xiàng)】
1. 一種代碼庫(kù)拆分的方法,其特征在于,所述方法包括: 讀取預(yù)設(shè)的拆分配置文件,所述拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行拆分; 根據(jù)所述拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件; 根據(jù)所述拆分配置文件中的拆分配置信息對(duì)所述原代碼庫(kù)的代碼文件進(jìn)行拆分,獲得 多個(gè)目標(biāo)代碼庫(kù); 將所述目標(biāo)代碼庫(kù)推送給所述拆分配置文件指定的服務(wù)器。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述原代碼庫(kù)信息包含下述至少一種信 息: 原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址; 所述根據(jù)所述拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件,包括: 根據(jù)所述原代碼庫(kù)名稱、所述原代碼庫(kù)標(biāo)識(shí)及所述原代碼庫(kù)地址中的一項(xiàng)或至少兩項(xiàng) 的組合,查找所述原代碼庫(kù); 讀取所述原代碼庫(kù)中的代碼文件。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述拆分配置信息包括與所述原代碼庫(kù)中 文件目錄分支相對(duì)應(yīng)的上游代碼模塊名稱,以及與所述上游代碼模塊名稱對(duì)應(yīng)的拆分模塊 名稱; 所述根據(jù)所述拆分配置文件中的拆分配置信息對(duì)所述原代碼庫(kù)的代碼文件進(jìn)行拆分, 獲得多個(gè)目標(biāo)代碼庫(kù),包括: 在所述原代碼庫(kù)中查找與所述上游代碼模塊名稱對(duì)應(yīng)的文件目錄分支; 將所述文件目錄分支下的代碼文件拆分到與所述上游代碼模塊名稱對(duì)應(yīng)的拆分模塊 名稱下,獲得對(duì)應(yīng)所述拆分模塊名稱的目標(biāo)代碼庫(kù)。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述目標(biāo)代碼庫(kù)推送給所述拆分配 置文件指定的服務(wù)器,包括: 將所述目標(biāo)代碼庫(kù)推送給與所述拆分模塊名稱對(duì)應(yīng)的服務(wù)器地址。5. 根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法進(jìn)一步包括: 若所述上游代碼模塊名稱與所述原代碼庫(kù)中文件目錄分支不對(duì)應(yīng),則將所述原代碼庫(kù) 中的代碼文件整體推送給預(yù)設(shè)的服務(wù)器。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括: 將所述原代碼庫(kù)的代碼歷史信息同步到所述目標(biāo)代碼庫(kù)中。7. -種代碼庫(kù)拆分的裝置,其特征在于,所述裝置包括: 讀取單元,用于讀取預(yù)設(shè)的拆分配置文件,所述拆分配置文件用于對(duì)原代碼庫(kù)進(jìn)行拆 分; 獲取單元,用于根據(jù)所述拆分配置文件中的原代碼庫(kù)信息獲取原代碼庫(kù)的代碼文件; 拆分單元,用于根據(jù)所述拆分配置文件中的拆分配置信息對(duì)所述原代碼庫(kù)的代碼文件 進(jìn)行拆分,獲得多個(gè)目標(biāo)代碼庫(kù); 推送單元,用于將所述目標(biāo)代碼庫(kù)推送給所述拆分配置文件指定的服務(wù)器。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述原代碼庫(kù)信息包含下述至少一種信 息: 原代碼庫(kù)名稱、原代碼庫(kù)標(biāo)識(shí)及原代碼庫(kù)地址; 所述獲取單元,包括: 原代碼庫(kù)查找模塊,用于根據(jù)所述原代碼庫(kù)名稱、所述原代碼庫(kù)標(biāo)識(shí)及所述原代碼庫(kù) 地址中的一項(xiàng)或至少兩項(xiàng)的組合,查找所述原代碼庫(kù); 讀取模塊,用于讀取所述原代碼庫(kù)中的代碼文件。9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述拆分配置信息包括與所述原代碼庫(kù)中 文件目錄分支相對(duì)應(yīng)的上游代碼模塊名稱,以及與所述上游代碼模塊名稱對(duì)應(yīng)的拆分模塊 名稱; 所述拆分單元,包括: 文件目錄分支查找模塊,用于在所述原代碼庫(kù)中查找與所述上游代碼模塊名稱對(duì)應(yīng)的 文件目錄分支; 拆分模塊,用于將所述文件目錄分支下的代碼文件拆分到與所述上游代碼模塊名稱對(duì) 應(yīng)的拆分模塊名稱下,獲得對(duì)應(yīng)所述拆分模塊名稱的目標(biāo)代碼庫(kù)。10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述推送單元,用于將所述目標(biāo)代碼庫(kù)推 送給與所述拆分模塊名稱對(duì)應(yīng)的服務(wù)器地址。11. 根據(jù)權(quán)利要求9或10所述的裝置,其特征在于,所述推送單元,用于若所述上游代碼 模塊名稱與所述原代碼庫(kù)中文件目錄分支不對(duì)應(yīng),則將所述原代碼庫(kù)中的代碼文件整體推 送給預(yù)設(shè)的服務(wù)器。12. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置進(jìn)一步包括: 同步單元,用于將所述原代碼庫(kù)的代碼歷史信息同步到所述目標(biāo)代碼庫(kù)中。
【文檔編號(hào)】G06F9/44GK105867903SQ201511016900
【公開(kāi)日】2016年8月17日
【申請(qǐng)日】2015年12月29日
【發(fā)明人】李欣
【申請(qǐng)人】樂(lè)視致新電子科技(天津)有限公司