(武漢輕工大學農業信息化 湖北 武漢 430023)
隨著軟件開發規模的逐漸擴大,以及軟件開發復雜性的逐步提高,軟件開發團隊由一個向多個的轉變,導致軟件開發過程中的各種類型文檔變得越來越多,以及文檔的管理越來越混亂。因而如何高效有序的對各種類型文檔的管理在整個軟件工程領域具有至關重要的作用。
SVN(Subversion)是一款當前在軟件開發過程中很流行的軟件版本管理工具,它能夠準確記錄每一次配置項的變更、同時也支持用戶會退到之前指定的一個版本。同時SVN的安全性會更高,它從系統和控制的角度進行了“有機”和“無縫”的整合,能夠和Apache2進行整合,通過http協議訪問SVN倉庫。雖然SVN作為版本管理工具具備很多優秀的功能,但是缺少友好的管理界面,用戶對人員、權限進行維護和管理的時候困難重重。
本文基于SVN,設計和實現一款基于WEB的文檔版本管理系統,采用安全組的權限控制機制,方便用戶在界面上對文檔的訪問、刪除、更新版本、回退等操作進行控制。
文檔版本管理系統應允許授權用戶按需建立目錄,允許用戶以目錄的方式查找相關文件,允許授權的用戶批量上傳指定本地目錄下的所有文檔,允許授權的用戶批量上傳指定本地目錄下的所有文檔。當進行本地目錄文檔批量上傳時,文檔版本管理系統應在指定的上傳目錄下自動建立和本地上傳目錄同樣層級結構和名稱的文檔目錄結構。
文檔版本管理系統應允許用戶批量下載指定目錄內的所有文檔。當批量下載指定目錄時,應在本地指定目錄下建立跟文檔版本管理系統中同樣的文檔目錄結構。
文檔版本管理系統的目錄和文檔應支持“數字+文本”的命名方式。
文檔版本管理系統應支持文檔歷史記錄。功能包括:每次上傳新版本時,允許填入提交說明,并作為歷史信息記錄,同時自動記錄上傳時間和操作用戶。允許瀏覽和下載文檔的歷史版本,允許用戶恢復到指定的版本的文檔,應支持在指定目錄下通過名稱來檢索相關文件。
上傳文件時,若待上傳文件的名稱(相對路徑和文檔名稱)和指定位置下的文件(相對路徑和文檔名稱)重名時,則認為是對已有文檔的版本升級。
將SVN集成到WEB系統是通過SVNKIT(SVN提供的JAVA版SVN客戶端庫)來實現的,當用戶發起更新請求的時候,系統首先驗證該用戶是否具備操作權限,如果不具備操作權限,則返回,具備操作權限,則通過SVNKIT操作SVN的工作拷貝,然后通過SVN的工作拷貝操作SVN版本庫。系統結構圖如下圖1:

圖1 系統結構圖
在將SVN和WEB系統集成的過程中有兩大難點,一是如何將SVN的用戶和WEB系統用戶集成,二是如何將WEB系統權限和SVN權限控制機制集成。
1.SVN用戶和FADP用戶集成
思路是現將SVN服務器和apache集成,以便可以通過http請求能夠直接訪問SVN的倉庫。然后再和MYSQL集成,最后配置SVN人員驗證的數據庫表來源于WEB系統的人員表。
2.SVN權限和FADP平臺權限集成
思路:將WEB系統的安全組權限控制機制生成SVN能夠識別的auth文件。在WEB系統中預先定義映射規則,例如:刪除、添加、變更權限對應auth文件中的RW權限,查看權限對應auth文件中的R權限。現在用戶張三(zhangSan)具備A文件夾的刪除權限,那么將WEB系統的權限轉換成SVN能夠識別的auth權限控制文件的內容如下:
[aliases]
[groups]
test#test=zhangSan
[A:/]
@test#test=rw
本系統目前實現了上傳、新建文件夾、重命名、刪除等功能,后面會繼續和客戶溝通,進一步完善文檔版本管理的功能。