摘 要多媒體素材庫的建設(shè)需要多個人共同合作完成,因此在素材庫的建設(shè)過程中存在文件頻繁的變更,共享文件最新一致數(shù)據(jù),可能需要回溯到某個版本等管理問題。利用Subversion的特點(diǎn),結(jié)合多媒體素材庫建設(shè)中文檔管理的特點(diǎn),本文闡述了有效解決文檔版本控制的 Subversion 管理方法。
【關(guān)鍵詞】Subversion(SVN) 版本控制 多媒體素材庫
1 問題的提出
多媒體素材庫的開發(fā)需要許多個人共同合作完成,開發(fā)過程中項目組成員需要共享各專業(yè)數(shù)據(jù)庫中數(shù)據(jù),為了保證素材庫的正常建設(shè),項目組成員需要保證每個人拿到的文件都是最新的、一致的,且可以根據(jù)需要回溯到之前的某個節(jié)點(diǎn),這就需要在項目過程中做好數(shù)據(jù)的版本管理。 素材庫的文件版本管理是一個素材庫建設(shè)的基礎(chǔ),它不僅可以提高素材庫的建設(shè)效率,而且可以提高素材庫的共享性,為多媒體素材庫的長期發(fā)展保駕護(hù)航。
多媒體素材庫的文件數(shù)據(jù)是其建設(shè)的核心,如果忽略對其版本控制管理的重要性,會給其帶來許多問題。
(1)缺少版本規(guī)劃,時間久了容易引起版本混亂;
(2)版本沒有進(jìn)行生命周期管理,維護(hù)成本很大;
(3)版本升級測試通過后,沒有及時歸檔(包括中間產(chǎn)生/更新的各種過程文檔);
(4)歸檔后的版本,下發(fā)文件人員沒有及時發(fā)布出去;
(5)由于沒有做好文檔數(shù)據(jù)版本管理,經(jīng)常出現(xiàn)同一項目組的開發(fā)人員的版本不一致,此時想回溯到之前的版本變得困難重重,從而對項目造成嚴(yán)重影響。
2 版本控制的概念
版本庫Repository是 Subversion的核心部分,它是數(shù)據(jù)的中央倉庫,版本庫以典型的文件和目錄結(jié)構(gòu)形式文件系統(tǒng)樹來保存信息。任意數(shù)量的客戶端連接到版本庫讀取修改這些文件??蛻舳送ㄟ^寫數(shù)據(jù)將信息分享給其他人,通過讀數(shù)據(jù)獲取別人共享的信息。一個數(shù)據(jù)倉庫對應(yīng)的可以是一個項目,也可以是多個項目。SVN是基于數(shù)據(jù)倉庫進(jìn)行管理的。
它的主要特征有:
(1)“提交(commit)”實現(xiàn)了真正意義上的單個文件操作。
(2)版本號依據(jù)每次提交而改變,日志信息也是針對每次提交而設(shè)置。
(3)具有創(chuàng)建分支(Branch)和標(biāo)簽(tag)的功能。
3 SVN應(yīng)用
SVN Repository 是多媒體素材庫的版本庫核心,所有的數(shù)據(jù)都以一定的數(shù)據(jù)格式存放在這個倉庫。用戶根據(jù)權(quán)限可以訪問版本庫。
3.1 簡述
(1)建立項目的數(shù)據(jù)倉庫,并導(dǎo)入項目的最初版本(由管理員完成)。
svn://10.232.201.102/多媒體素材庫/護(hù)理學(xué)
(2)從倉庫獲取一個“工作副本”(svn checkout,可以獲取最新版本也可以獲取以前的某個版本),在這個“工作副本”中進(jìn)行項目開發(fā),修改完畢將變動提交到倉庫。
svn checkout svn://10.232.201.102/多媒體素材庫/護(hù)理學(xué)。
在團(tuán)隊開發(fā)中,進(jìn)入已有的“工作副本”進(jìn)行編輯前,應(yīng)該先使用"svn update"命令將當(dāng)前“工作副本”更新到倉庫中的最新版本。
3.2 Subversion常用命令
典型的工作周期是這樣的:
3.2.1 更新你的工作拷貝
· svn update
將當(dāng)前“工作副本”更新到倉庫中的最新版本。
3.2.2 做出修改
· svn add
· svn delete
· svn copy
· svn move
如果要在項目中增加或刪除某一文件或目錄(包括復(fù)制和移動),必須使用svn的相關(guān)命令進(jìn)行標(biāo)記。
for example: 增加 doc 文件,用命令 touch doc , svn add doc
3.2.3 檢驗修改
svn status
· svn diff
· svn revert ( 把文件恢復(fù)到未修改的狀態(tài))
3.2.4 合并別人的修改到工作拷貝
·svn update
· svn resolved
3.2.5 提交你的修改
· svn commit
檢查確認(rèn)無誤后,便可提交此次更改,同時要附加此次更改的說明注釋信息。
沖突發(fā)現(xiàn)與解決:
Subversion打印C標(biāo)記,并且標(biāo)記這個文件已沖突。
對于每一個沖突的文件,Subversion放置三個額外的未版本化文件到你的工作拷貝:
filename.mine
你更新前的文件,沒有沖突標(biāo)志,只是你最新更改的內(nèi)容。
filename.rOLDREV
這是你的做更新操作以前的BASE版本文件,就是你在上次更新之后未作更改的版本。
filename.rNEWREV
這是你的Subversion客戶端從服務(wù)器剛剛收到的版本,這個文件對應(yīng)版本庫的HEAD版本。
如果你遇到?jīng)_突,三件事你可以選擇:
(1) “手動”合并沖突文本(檢查和修改文件中的沖突標(biāo)志)。
(2) 用某一個臨時文件覆蓋你的工作文件。
(3) 運(yùn)行svn revert 來放棄所有的修改。
一旦你解決了沖突,你需要通過命令svn resolved讓Subversion知道,這樣就會刪除三個臨時文件,Subversion就不會認(rèn)為這個文件是在沖突狀態(tài)了。
3.3 標(biāo)簽
相應(yīng)的svn庫都有tag 文件夾,tag只可讀,不可寫,tag是開發(fā)文檔目錄主干的一個快照,根據(jù)開發(fā)的階段,可以在重要的階段打 tag,以便于以后對文檔的查找和恢復(fù)。
在多媒體素材庫的數(shù)據(jù)搜集完后可以打一個tag,當(dāng)編輯初稿后可以打一個tag, 當(dāng)初審?fù)瓿珊罂梢栽俅蛞粋€tag,當(dāng)然在最終發(fā)布時,也要打tag。
4 小結(jié)
如今在多媒體素材庫的建設(shè)體系中,文檔管理始終是一個難題。利用SVN的特點(diǎn)可以有效解決對文檔的版本控制。將維護(hù)人員與開發(fā)人員相互分離,開發(fā)人員更新文件,而維護(hù)人員在工作時總能拿到最新的文件,不但提高了效率,更減少了誤操作的可能性。同時,維護(hù)人員通過SVN更新文檔,使得開發(fā)人員能夠更好地對素材庫文件進(jìn)行改進(jìn)。此外,對于團(tuán)隊中不同人員的權(quán)限控制,也保證了文檔的安全性,避免了被無關(guān)人員的篡改。
參考文獻(xiàn)
[1]許林.醫(yī)院網(wǎng)絡(luò)環(huán)境中軟件在線升級技術(shù)的研究與實現(xiàn)[D].中國石油大學(xué), 2011(08).
作者簡介
張更新(1981-),男,河北省衡水市人。碩士研究生學(xué)歷?,F(xiàn)為衡水衛(wèi)生學(xué)校文化教學(xué)部講師。
作者單位
衡水衛(wèi)生學(xué)校 河北省衡水市 053000