国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SVN的校級統(tǒng)一信息系統(tǒng)版本管理系統(tǒng)的設計與實現(xiàn)

2011-10-18 08:10:42鐘文鋒付小龍
中國教育信息化 2011年12期
關鍵詞:校級開發(fā)人員分支

鐘文鋒,付小龍,杜 炤

(清華大學 計算機與信息管理中心,北京 100084)

基于SVN的校級統(tǒng)一信息系統(tǒng)版本管理系統(tǒng)的設計與實現(xiàn)

鐘文鋒,付小龍,杜 炤

(清華大學 計算機與信息管理中心,北京 100084)

清華大學服務于校級統(tǒng)一信息建設的版本管理系統(tǒng),以開源工具為基礎,實現(xiàn)了對軟件系統(tǒng)研發(fā)版本的有效管理。版本管理系統(tǒng)采用先進的Subversion版本管理為基礎平臺,創(chuàng)新性地以基線加更新文件的版本管理模式,實現(xiàn)了清晰的更新管理、精確的版本定義和高效的自動編譯,同時支持多分支并行開發(fā),解決了清華大學在消除信息孤島,建設校級統(tǒng)一信息系統(tǒng)的過程中,軟件系統(tǒng)更新頻繁、開發(fā)部署時間短、多系統(tǒng)并行開發(fā)整合等多方面困難,在清華大學的校園信息化建設實踐中取得了良好的應用效果。

版本管理;基線;變更控制

一、系統(tǒng)背景

清華大學信息系統(tǒng)建設目前正處于建設全局性統(tǒng)一信息系統(tǒng)階段。信息系統(tǒng)建設正由各業(yè)務部門的獨立業(yè)務系統(tǒng)建設,轉變?yōu)槿中畔⒒慕y(tǒng)一信息系統(tǒng)建設,信息整合成為現(xiàn)階段重要工作內容。

在統(tǒng)一信息系統(tǒng)不斷合并原業(yè)務子系統(tǒng)的過程中,原有基于CVS的版本管理方式遇到了很多挑戰(zhàn)。首先是代碼庫訪問權限不滿足要求。隨著統(tǒng)一信息系統(tǒng)規(guī)模的擴大,研發(fā)人員數(shù)量在增多。各個研發(fā)人員的角色和負責模塊都不盡相同,需要對每個研發(fā)人員精確地設置不同的權限。而CVS的權限認證只能到文件夾,不能滿足復雜權限控制的要求。其次是版本定義過程耗時過長。CVS在給系統(tǒng)打標簽的過程中需要依次處理文件夾下的所有文件,耗費了大量的時間,在信息系統(tǒng)業(yè)務范圍擴大、更新頻繁的情況下,定義版本效率低下的缺點愈加明顯。再次是缺少對版本和缺陷的檢索和統(tǒng)計功能。CVS沒有缺陷管理功能,研發(fā)團隊無法查詢缺陷的修改時間、是否已經發(fā)布等信息,也無法從宏觀上通過報表得知系統(tǒng)的更新頻率和開發(fā)人員的工作效果。這些原因都促使必須要升級版本管理系統(tǒng)以適應新的要求。

開源軟件SVN(Subversion)是CVS的替代產品,它在CVS的基礎上加強了對目錄版本的控制,在安全性方面也有了改善。但SVN系統(tǒng)也存在某些限制,如整體復制的版本定義方式雖然能很快完成標簽,但無法直接將某個文件標定到特定版本上,沒有版本狀態(tài)、缺陷管理功能等。因此在SVN基礎上,清華大學自主開發(fā)了版本管理系統(tǒng),通過增加完整的版本定義、編譯、發(fā)布和缺陷記錄、檢索和統(tǒng)計等功能,實現(xiàn)對版本的全面高效管理。

二、系統(tǒng)功能

基于SVN的校級統(tǒng)一信息系統(tǒng)版本管理系統(tǒng)實現(xiàn)了以下功能:

1.記錄、檢索與統(tǒng)計缺陷

SVN提交文件時可以填寫注釋,在注釋中記錄修復的缺陷描述,但是這種缺陷記錄方式只能以文件或目錄為視角,列出歷史上曾對文件或目錄所做的修改及注釋。這無法滿足日常的以缺陷為視角的,查詢某個缺陷修改時間和是否已經部署上線的要求。為此,版本管理系統(tǒng)設計了規(guī)范的編譯申請入口,要求開發(fā)人員在提交編譯申請的同時必需填寫修改說明、部署說明等信息。這些申請信息以固定格式的歸檔郵件存儲在服務器上。版本管理系統(tǒng)提供歸檔郵件搜索服務,研發(fā)人員可方便地搜索缺陷信息。在此基礎上,版本管理系統(tǒng)還提供了缺陷統(tǒng)計功能,使得版本管理員能直觀地了解各個系統(tǒng)的升級頻率。

2.編譯發(fā)布自動化

學校正在運行的信息系統(tǒng)差異很大,有基于Java的 B/S(Browser/Server)應用,也有基于 PowerBuilder的C/S(Client/Server)程序。甚至有些系統(tǒng)部分功能基于B/ S,部分功能基于C/S。不同系統(tǒng)的編譯方式不一樣,但都須經過版本定義、編譯構建、文檔記錄和提交歸檔等發(fā)布過程。為此,對不同系統(tǒng)的版本發(fā)布過程做了分析,抽象出不同系統(tǒng)在發(fā)布過程中的相同操作,將這些共同的操作編寫成自動編譯發(fā)布腳本,并將系統(tǒng)間的區(qū)別記錄至配置文件,在版本管理系統(tǒng)中實現(xiàn)了一個自動化工具,能通過加載不同配置文件的方式對構架差異懸殊的系統(tǒng)統(tǒng)一進行編譯和發(fā)布。統(tǒng)一的自動化編譯發(fā)布替代了繁瑣的人工操作,顯著提高了版本管理的工作效率。

3.產出全量安裝包和增量補丁

版本管理編譯的結果通常是整個系統(tǒng)的全量安裝包,而全量安裝包在運行環(huán)境上的部署必須先暫停相關系統(tǒng)的服務,這樣會影響在線用戶的正常使用。如果只是修改某個功能的代碼,可通過部署增量補丁的方式避免暫停整個系統(tǒng)服務,避免影響用戶的使用。版本管理系統(tǒng)在編譯后同時產出全量安裝包和增量補丁。系統(tǒng)管理員可以選擇以全量或者增量方式部署更新。增量補丁部署方式無需重啟整個系統(tǒng),增加了部署的靈活性。

4.支持多分支并行開發(fā)

統(tǒng)一信息系統(tǒng)劃分為多個子業(yè)務模塊,具體的子業(yè)務模塊由多位研發(fā)人員共同開發(fā)和維護。從單個子系統(tǒng)的角度,版本管理系統(tǒng)提供了共用的存儲池,使得子系統(tǒng)內部的開發(fā)人員能共享彼此的工作成果并完成任務。從整個統(tǒng)一信息系統(tǒng)的角度,版本管理系統(tǒng)將這些子模塊的修改彼此隔離,使之不相互影響。版本管理系統(tǒng)利用SVN的分支功能,通過給不同子業(yè)務系統(tǒng)開設不同分支的方式,支持了互不影響的并行開發(fā)。

三、關鍵技術

1.版本管理流程

規(guī)范且有效的流程是實現(xiàn)高效版本管理工作的前提。版本發(fā)布過程由版本管理員和開發(fā)人員共同完成。開發(fā)人員接到缺陷修改或者新功能開發(fā)任務后先確認子系統(tǒng)分支路徑,并在分支上修改提交代碼。在分支測試通過后,子系統(tǒng)開發(fā)人員將分支上的修改合并至主干。同時負責該模塊的開發(fā)人員填寫系統(tǒng)名稱、修改說明、修改文件列表等信息,向版本管理系統(tǒng)提交版本發(fā)布申請。版本管理系統(tǒng)接收申請后通知版本管理員審核。版本管理員審批申請,將單個或多個申請劃入本次要處理的版本中,并向版本管理系統(tǒng)發(fā)起自動工作命令。然后版本管理系統(tǒng)自動根據(jù)這些申請單定義新的版本基線,從SVN主干目錄上取出源代碼、編譯增量全量包、生成說明文檔、保存結果至共享目錄,最后向版本管理員、研發(fā)人員和系統(tǒng)管理員發(fā)出編譯發(fā)布任務結束通知。

2.基線加變更版本定義模型

基線加變更模型精確了定義版本,解決了子系統(tǒng)合并進度不一致和SVN整體復制定義基線之間的沖突。基線 (Baseline)是被明顯標識和記錄下來的源代碼整體版本。繪制基線的工作就是定義版本的過程。這個過程可以是整體拷貝,也可以通過對某些修改過的文件打標簽來完成。SVN通過整體復制定義基線,使用SVN能夠按照某個時刻來界定版本,凡是在當前已提交到應用系統(tǒng)SVN主干目錄的代碼都會被編譯。此外,如果有不希望將所有文件的最新修改都納入新版本的情況,如兩個子系統(tǒng)恰好同時合并分支至主干,其中一個分支已經合并結束且提交了編譯申請,而另一個分支剛合并了一部分代碼后發(fā)現(xiàn)有沖突,還需要手工合并和測試。這時定義的版本應該只包含已經合并結束分支的修改,如果簡單地以時間劃定版本,那新定義的版本將會錯誤地包含還未合并結束的分支上的修改?;€加變更模型解決了上述問題。

基線加變更模型:以舊基線和新更新文件的標識來定義新基線。新基線不再是簡單地以某個時刻為邊界來劃定,而是在某條舊基線基礎上,通過更新若干個新修改文件的節(jié)點作為新的基線。

如圖所示,每一條垂直向下的實直線表示單個文件的時間軸,在這個時間軸上修改過文件的時刻畫圈記錄文件的變更。用一條水平虛線將各個文件某個時刻上的修改狀態(tài)串連起來,這條虛線就是某個時刻源程序的一張快照,這就是基線?;€1表示系統(tǒng)初始時刻的版本,而基線3則表示軟件幾經修改后在當前時刻的版本。SVN通過整體復制的方式只能得到水平的基線,如果需要定義如基線2所示的版本,那使用SVN是無法直接操作的?;€加變更模型精確定義了版本:在B時刻將基線2定義為:在基線1的基礎上接受文件1、文件2和文件4的最新修改。通過這種方式就可以將存儲池內文件3在A時刻之后做的所有更新都忽略掉。

實際操作中在申請編譯時,開發(fā)人員需要確認分支合并入主干的文件清單。版本管理系統(tǒng)根據(jù)此文件清單變更基線并構件系統(tǒng)。

四、系統(tǒng)實現(xiàn)與應用效果

版本管理系統(tǒng)由兩部分構成:部署在Linux服務器上的SVN系統(tǒng)和部署在Windows服務器上的管理軟件。管理軟件使用Java語言開發(fā),采用Apache Ant實現(xiàn)自動構建。開發(fā)人員提交的編譯申請以歸檔電子郵件形式存儲在磁盤上,通過Windows Search實現(xiàn)缺陷內容搜索。

清華大學版本管理系統(tǒng)現(xiàn)在負責學校24個信息系統(tǒng)的日常編譯發(fā)布工作,平均每天發(fā)布3.9個版本,支持了系統(tǒng)的研究生培養(yǎng)環(huán)節(jié)、境外短期研修課程管理等模塊使用多分支并行開發(fā)。增量補丁部署方式在綜合教務CS等系統(tǒng)中得到了應用,避免了關閉整個系統(tǒng)服務。

清華大學版本管理系統(tǒng)克服了校級統(tǒng)一信息系統(tǒng)建設過程中業(yè)務系統(tǒng)差異大,程序更新頻率高,版本管理工作量大等問題。實現(xiàn)了自動對構架差異懸殊的系統(tǒng)進行編譯發(fā)布,既提高了工作效率又保證了版本的準確性,有力支持了學校的信息化建設。

[1]張路,謝冰,梅宏等.基于構件的軟件配置管理技術研究[J].電子學報,2001(2):266.

[2]蔣東興,王進展,袁芳.數(shù)字校園校級統(tǒng)一信息系統(tǒng)建設研究與實踐[J].中山大學學報(自然科學版),2009,48(z1):12.

[3]董越.未雨綢繆-理解軟件配置管理[M].北京:電子工業(yè)出版社,2008.

[4]David E.Bellagio,Tom J.Milligan.王海鵬譯.軟件配置管理策略與IBM Rational ClearCase[M].北京:人民郵電出版社,2006.

[5]劉燕秋,勉玉靜,趙文耘.軟件配置管理中版本管理技術研究[J].計算機工程與應用,2003(21):68.

[6]于宏霞,陳凱,白英彩.基線技術在軟件配置管理過程中的應用[J].計算機應用與軟件,2006.23(2):43.

[7]倪曉峰,趙文耘,張捷.構件軟件配置管理以及其版本控制技術研究[J].計算機工程與應用,2009(2):94.

[8]BenCollins-Sussman,BrianW.Fitzpatrick,C.Michael Pilato.使用Subversion進行版本控制[OL].2011-02-20. http://svndoc.iusesvn.com/svnbook.

(編輯:楊馥紅)

TP399

A

1673-8454(2011)23-0055-03

猜你喜歡
校級開發(fā)人員分支
黃山學院校級重點學科簡介
——生態(tài)學
我校黨委榮獲“陜西省高校先進校級黨委”稱號
黃山學院校級重點學科簡介
——馬克思主義學科
巧分支與枝
學生天地(2019年28期)2019-08-25 08:50:54
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網應用
一類擬齊次多項式中心的極限環(huán)分支
讓Windows 10進入開發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
后悔了?教你隱藏開發(fā)人員選項
電腦愛好者(2015年6期)2015-04-03 01:20:56
2014 年西安航空學院校級科研基金項目一覽表
生成分支q-矩陣的零流出性
高雄市| 祁阳县| 武功县| 石景山区| 岳普湖县| 永登县| 千阳县| 萍乡市| 安多县| 漳浦县| 柳江县| 忻州市| 夏邑县| 安塞县| 阜平县| 抚顺县| 雷州市| 曲松县| 梓潼县| 临沧市| 巩留县| 清苑县| 延庆县| 运城市| 景谷| 陇西县| 天全县| 西丰县| 乡城县| 绥棱县| 台东市| 吉水县| 东乡| 宜丰县| 石渠县| 高安市| 德钦县| 朔州市| 白山市| 安泽县| 抚宁县|