【正文】
m is a Web based user management system about subversion. On the Open Source World, concurrent version system (cvs) has long been the only choice in version control. However, like many other tools, cvs begins to show out of date. And subversion, as a successor to cvs which has the features of the new version control system. However, its user management mechanism is poor. The system is based on the reality, achieves a friendly user interface, in order to enhance efficiency.The user management subsystem of subversion is divided into two basic parts. One part is ordinary user management, including registration and information editing. Another major part is the superuser authenticates to the mon user’s applications and the distribution of the corresponding authority.The system is based on Web using apache, php and mysql. Php as a active pager procedure, mysql as background information storage. Apache as HTTP server to provide a web interface for this user management system. The system has high stability and portability .Key words: Php;Subversion;Apache;User Managemen目 錄論文總頁數(shù):24頁1引 言 12系統(tǒng)需求分析 2 2 2 2 3 3 3 33系統(tǒng)總體設(shè)計(jì) 3 3 3 44環(huán)境選擇、搭建和配置 4+php+mysql的可行性以及各自特點(diǎn) 4+php+mysql的可行性 4 php技術(shù)的特點(diǎn) 4 apache的技術(shù)特點(diǎn) 5 mysql的技術(shù)特點(diǎn) 5 6 安裝配置php 6 安裝配置apache 6 安裝配置mysql 7 安裝subversion以及建立版本庫 8 subversion服務(wù)器配置 95模塊功能的詳細(xì)實(shí)現(xiàn)過程 10 10 11 11 12 12 1添加、刪除和更新等 13 17 17 186模塊測試結(jié)果 18 18 19結(jié) 論 22參考文獻(xiàn) 22致 謝 23聲 明 241引 言版本控制之于程序員,就好像還原系統(tǒng)對于計(jì)算機(jī)一樣。您可以在不觸及主干的分支中進(jìn)行試驗(yàn),而不會影響到其他小組成員。CVS本身是自由軟件,不加限制的處事風(fēng)格,對網(wǎng)絡(luò)化操作的支持(眾多身處不同地方的程序員可以共享他們的工作),都非常符合開源世界的協(xié)作精神。subversion的設(shè)計(jì)者們力圖通過兩方面的努力贏得CVS用戶的青睞:保持構(gòu)建開源軟件版本控制系統(tǒng)的方式(以及視覺和感覺上)與CVS盡可能類似,同時(shí)盡力彌補(bǔ)CVS許多顯著的缺陷。但是版本控制軟件的價(jià)值已遠(yuǎn)遠(yuǎn)超出軟件開發(fā)的領(lǐng)域。subversion將文件存放在中心版本庫里。subversion的版本庫可以通過網(wǎng)絡(luò)訪問,從而使用戶可以在不同的電腦上進(jìn)行操作。某些版本控制系統(tǒng)本身也是軟件配置管理(SCM)系統(tǒng),這種系統(tǒng)經(jīng)過精巧的設(shè)計(jì),專門且來管理源代碼樹,并且具備許多與軟件開發(fā)有關(guān)的特性—比如,對編程語言的支持,或者提供程序構(gòu)建工具。,它可以使得正在使用subversion的某一項(xiàng)工程的人們,.。subversion對目錄的權(quán)限保存在subversion的配置文件當(dāng)中?,F(xiàn)在subversion也得到了很廣泛的使用。包括對用戶最終基本的認(rèn)證管理和權(quán)限管理。對審核通過的用戶進(jìn)行刪除,分配權(quán)限。3系統(tǒng)總體設(shè)計(jì)subversion用戶管理系統(tǒng)有兩大主要模塊:一個(gè)用戶認(rèn)證注冊模塊。通過認(rèn)證后可以分配相當(dāng)?shù)臋?quán)限。同步SVN審核寫入數(shù)據(jù)庫管理員管理模塊寫入數(shù)據(jù)庫結(jié)束開始用戶認(rèn)證注冊模塊注冊圖2 系統(tǒng)功能模塊流程圖在數(shù)據(jù)庫svn_usr中包含了如下的一些表以及它們各自的作用。而subversion作為一個(gè)開源軟件。 php技術(shù)的特點(diǎn) (1)開放源代碼PHP在“The PHP License,version ”協(xié)議下發(fā)行,實(shí)際上也是一種自由的軟件。(3)數(shù)據(jù)庫庫支持對數(shù)據(jù)庫提供廣泛的支持是PHP受到人們普遍歡迎的主要原因之一,世界上流行的數(shù)據(jù)庫系統(tǒng)幾乎都在它的支持之列,包括:Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、Microsoft SQL Server、MySQL、Solid、 Sybase、ODBC、OracleOracle、PostgreSQL等。在添加其他模塊之后,PHP提供更多的功能,如英文拼寫檢查、BC高精確度計(jì)算、公元?dú)v法、PDF文件格式、Hyperwave服務(wù)器、圖形處理、加密、解密、哈系處理、WDDX功能、qmail與vmailmgr系統(tǒng)、壓縮文件處理、XML解析等。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺上。本來它只用于小型或試驗(yàn)Internet網(wǎng)絡(luò),后來逐步擴(kuò)充到各種Unix系統(tǒng)中,尤其對Linux的支持相當(dāng)完美。 mysql的技術(shù)特點(diǎn)mysql是一個(gè)快速、多線程、多用戶的SQL數(shù)據(jù)庫服務(wù)器,其出現(xiàn)雖然只有短短的數(shù)年時(shí)間,但憑借著“開放源代碼”的東風(fēng),它從眾多的數(shù)據(jù)庫中脫穎而出,成為PHP的首選數(shù)據(jù)庫。線程是輕量級的進(jìn)程,它可以靈活地為用戶提供服務(wù),而不過多的系統(tǒng)資源。這意味著在一個(gè)操作系統(tǒng)中實(shí)現(xiàn)的應(yīng)用可以很方便地移植到其他的操作系統(tǒng)下。mysql支持所有的ODBC ,這樣就可以用Access連接mysql服務(wù)器,從而使得mysql的應(yīng)用被大大擴(kuò)展。(6)mysql擁有一個(gè)非常快速而且穩(wěn)定的基于線程的內(nèi)存分配系統(tǒng),可以持續(xù)使用面不必?fù)?dān)心其穩(wěn)定性。(8)PHP為mysql提供了強(qiáng)力支持,PHP中提供了一整套的mysql函數(shù),對mysql進(jìn)行了全方位的支持。用記事本打開,修改一下信息:搜索extension_dir = ./ 這行,并將其路徑指到你的PHP目錄下的extensions目錄,比如:extension_dir = D:\PHP\extensions 安裝配置apache我們下載到的for win32的是一個(gè)Msi安裝文件,直接雙擊它后就會自動執(zhí)行Apache的安裝了,按照提示安裝即可,其中要書寫的東西按照你的喜好填寫,沒甚么影響,當(dāng)然,目錄我還是建議你和PHP的目錄以致,選擇D:\目錄,這樣安裝后可以看到D:\Apache了。這些軟件可以到 上面下載獲得。這里不繼續(xù)描述,默認(rèn)的用戶名是root,密碼為空。這個(gè)協(xié)議利用了無處不在的HTTP協(xié)議是廣域網(wǎng)的核心這一點(diǎn),添加了寫能力—更明確一點(diǎn),版本化的寫—能力。你需要Apache d DAV模塊,Subversion和與之一同分發(fā)的mod_dav_svn文件系統(tǒng)提供者模塊,如果你有了這些組件,網(wǎng)絡(luò)化你的版本庫將非常簡單,如:配置好d ,并且使用mod_dav啟動,為mod_dav安裝mod_dav_svn插件,它會使用Subversion的庫訪問版本庫,并且(或者說暴露)版本庫。與 CVS 相比,Subversion 實(shí)現(xiàn)了更加先進(jìn)和安全的用戶認(rèn)證功能。開始修改信息用戶注冊未注冊用戶是否注冊已注冊用戶 否 是Pre_reg_user表user表結(jié)束圖形注釋::數(shù)據(jù)庫 :功能 ?。簡蜗驍?shù)據(jù)流動 :雙向數(shù)據(jù)流動圖6 用戶注冊數(shù)據(jù)流程圖開始分配用戶組權(quán)限審核注冊用戶Test2表user表subversion權(quán)限配置文件同步結(jié)束圖形注釋::數(shù)據(jù)文件:數(shù)據(jù)庫 :功能 ?。簡蜗驍?shù)據(jù)流動 :雙向數(shù)據(jù)流動圖7 管理員管理數(shù)據(jù)流程圖數(shù)據(jù)庫當(dāng)中各個(gè)表的詳細(xì)設(shè)計(jì)表2 記錄用戶基本信息主鍵列(屬性)名中文名稱類型寬度是否允許為空◎username用戶名varChar25NOT NULLpasswd用戶密碼varChar25NOT NULLgroups用戶組varChar25NOT NULLrealname用戶真實(shí)姓名varChar10NOT NULLdept所屬部門varChar50NOT NULLtel聯(lián)系電話varChar20NOT NULL表3 記錄未審核注冊用戶信息主鍵列(屬性)名中文名稱類型寬度是否允許為空◎username用戶名varChar25NOT NULLpasswd用戶密碼varChar25NOT NULLgroups用戶組varChar25NOT NULLrealname用戶真實(shí)姓名varChar10NOT NULLdept所屬部門varChar50NOT NULLtel聯(lián)系電話varChar20NOT NULL表4 用來進(jìn)行apache登錄認(rèn)證主鍵列(屬性)名中文名稱類型寬度是否允許為空◎username用戶名varChar25NOT NULLpasswd用戶密碼varChar25NOT NULLgroups用戶組varChar25NOT NULL表5 記錄用戶權(quán)限數(shù)據(jù)以及生成subversion權(quán)限配置文件主鍵列(屬性)名中文名稱類型寬度是否允許為空number列名int20NOT NULLgroup用戶組名varChar50NOT NULLname用戶名varChar50NOT NULL、添加、刪除和更新等class CSvnDb { //private private $m_link = NULL。svn_db39。svn_usr39。 . mysql_er。 if (!$m_link) { die(39。123439。localhost39。而本系統(tǒng)正是基于此,使用mysql數(shù)據(jù)庫的users表中內(nèi)容作為用戶登錄的認(rèn)證。最新的使用Apache HTTP的Subversion的編譯方法和Apache的配置方式可以看Subversion源代碼樹根目錄的INSTALL文件。這樣一個(gè)ApacheSubversion服務(wù)器具備了許多svnserve沒有的特性,但是也有一點(diǎn)難于配置,靈活通常會帶來復(fù)雜性。圖3 服務(wù)器安裝圖4 客戶端安裝圖5 建立版本庫的過程 subversion服務(wù)器配置由于本系統(tǒng)是采取的的基于Apache的認(rèn)證方式,所以需要進(jìn)行一些配置,如下::IfModule ssl_moduleSSLRandomSeed startup builtinSSLRandomSeed connect builtin/IfModulePHPIniDir {ROOT}/phpLoadModule php5_module {ROOT}/php/AddType application/xdphp .phpLoadModule mysql_auth_module modules/LoadModule dav_module modules/LoadModule dav_fs_module modules/LoadModule dav_svn_module modules/LoadModule authz_svn_module modules/Location /svn AuthMySQLEnable on AuthMySQLAuthoritative on AuthName MySQL auth AuthType Basic AuthMySQLHost localhost AuthMySQLDB svn_usr AuthMySQLUser svn_db AuthMySQLPassword 1234 AuthMySQLUserTable users AuthMySQLPwEncryption none require validuser require vali