<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小石頭
    Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
    posts - 91,comments - 22,trackbacks - 0

    在上一篇文章《用Subversion構(gòu)建版本控制環(huán)境》中,我們就Subversion的特性、安裝以及如何通過各種客戶端來操作資源庫進(jìn)行了詳細(xì)的介紹。文章中Subversion是以獨(dú)立的服務(wù)方式運(yùn)行,我們必須借住一些特定的客戶端,例如Subvresion本身提供的客戶端命令行程序、Eclipse插件以及集成在Windows資源管理器的TortoiseSVN工具。這些工具對于開發(fā)者而言當(dāng)然是必須的,但是當(dāng)我們有需要將資源庫發(fā)布在互聯(lián)網(wǎng)上的時(shí)候,就會讓我們的用戶操作起來非常不方便,用戶可能僅僅是需要瀏覽一下項(xiàng)目,卻要他安裝一堆程序,這難免讓人覺得繁瑣。

    怎么讓我們的用戶可以通過一些常用的程序例如資源管理器或者是瀏覽器就可以方便的瀏覽Subversion的資源庫呢?因此本文將充分的發(fā)掘Subversion在資源庫共享方面的功能,同時(shí)對Subversion在權(quán)限控制方面的內(nèi)容進(jìn)行詳細(xì)的介紹,同時(shí)也將詳細(xì)介紹如何將已有的CVS資源庫轉(zhuǎn)到Subversion上來。

    我們曾經(jīng)提到過Subversion相比較而言在共享方面的功能是大大的超過了CVS系統(tǒng),它可以通過Apache服務(wù)器提供基于WebDAV/DeltaV協(xié)議的支持。有了它你就可以通過資源管理器或者瀏覽器對資源庫進(jìn)行瀏覽以及操作。接下來我們將詳細(xì)介紹如何安裝并使用這個功能。(本文的所有軟件的安裝都是在Windows系統(tǒng)下進(jìn)行)

    1.?安裝Apache HTTP服務(wù)器

    http://httpd.apache.org下載最新的Apache服務(wù)器2.0.54版本的Windows安裝程序apache_2.0.54-win32-x86-no_ssl.msi,下載完畢直接安裝,使用默認(rèn)設(shè)置進(jìn)行安裝即可,安裝過程不再累贅。安裝完畢后使用瀏覽器打開網(wǎng)址http://localhost 檢查安裝是否成功完成。

    如果Apache無法啟動請檢查是否機(jī)器上已經(jīng)裝有IIS,把IIS停掉后再啟動Apache服務(wù)進(jìn)行測試。

    2.?安裝Subversion

    Subversion的安裝已經(jīng)在上一篇文章中詳細(xì)的介紹過了,如果你還不知道怎么安裝Subversion請參照《用Subversion構(gòu)建版本控制環(huán)境》。請確保將{subversion}\bin目錄是否在系統(tǒng)的PATH變量中存在,如果不存在請加上。

    有一點(diǎn)需要說明的是,使用跟Apache HTTP服務(wù)器結(jié)合的方式,你無需再啟動SVNService服務(wù)。

    3.?配置Apache HTTP服務(wù)器

    首先在Subversion的安裝目錄下的bin子目錄找到這樣兩個文件mod_dav_svn.so和mod_authz_svn.so,將這兩個文件復(fù)制到Apache安裝目錄下的modules子目錄,另外還有四個文件分別是intl3_svn.dll、libdb43.dll、libeay32.dll、ssleay32.dll,把這四個文件拷貝到subversion的bin目錄或者是modules目錄。

    打開Apache的配置文件httpd.conf,我們需要在該配置文件中通過LoadModule指令來加載Subversion的DAV模塊,例如下面一行信息。

    LoadModule dav_svn_module modules/mod_dav_svn.so

    需要注意的是,因?yàn)锳pache本身帶有mod_dav模塊,如果你的Apache中這個模塊是動態(tài)?加載的而不是直接編譯進(jìn)Apache的可執(zhí)行文件中的話,你應(yīng)該確保上面的指令在mod_dav模塊后面進(jìn)行加載,默認(rèn)的情況下mod_dav模塊是不啟用的,你需要把它前面的注釋去掉,如下:

    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_svn_module modules/mod_dav_svn.so

    同時(shí)另外一個模塊mod_authz_svn模塊也需要進(jìn)行加載,可以把它放置在mod_dav_svn后,例如:

    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    接下來我們必須告訴Apache我們的資源庫所在的路徑,可以通過Location指令來完成這個設(shè)置。因?yàn)椴幌M麨槊總€單獨(dú)的項(xiàng)目都進(jìn)行單獨(dú)的設(shè)置,所以我們把所有項(xiàng)目都存放在統(tǒng)一的資源庫目錄,那么可以使用SVNParentPath指令來指定存放所有項(xiàng)目的路徑。在httpd.conf文件最后添加下面配置:

    BR>??? DAV svn
    ??? SVNParentPath d:/svn/repository

    這樣我們就可以通過http://myhost/svn/<項(xiàng)目名> 來訪問存放于資源庫d:/svn/repository中的指定項(xiàng)目。當(dāng)然有可能你并不希望某個項(xiàng)目提供這樣一種訪問方式,這時(shí)候你可以使用SVNPath為每個項(xiàng)目進(jìn)行單獨(dú)的設(shè)置,SVNPath的使用方法如下:

    BR>??? DAV svn
    ??? SVNPath d:/svn/repository/project1

    同樣把這段配置放在httpd.conf最后,重啟Apache HTTP服務(wù)即可通過http://myhost/svn/project1 來訪問project1項(xiàng)目的資源庫。

    應(yīng)該提醒的是,所有的這些訪問都是匿名的,任何用戶只要能訪問這臺機(jī)器都可以訪問你所設(shè)定的資源庫,他可以對項(xiàng)目進(jìn)行瀏覽、檢出或者是提交,我相信你肯定不希望發(fā)生這樣的事情,接下來我們將介紹如何做好訪問的權(quán)限控制。

    現(xiàn)在我們先試著用Subversion自帶的客戶端提交一個項(xiàng)目以便于接下來的測試,隨便弄一個項(xiàng)目,執(zhí)行下列命令將項(xiàng)目加到資源庫中。

    輸入:svn import . http://localhost/svn -m "test"
    輸出:svn: PROPFIND request failed on '/svn'svn: PROPFIND of '/svn': 403
    Forbidden ( http://localhost )

    怎么回事?403 Forbidden?原因是我們必須先給項(xiàng)目創(chuàng)建資源庫,D:\svn\repository只是我們存放所有項(xiàng)目的目錄,我們必須在這個目錄下創(chuàng)建要提交項(xiàng)目的資源庫。使用下面命令先給項(xiàng)目創(chuàng)建好資源庫

    svnadmin create d:\svn\repository\project1

    再次執(zhí)行import命令后,就可以成功的導(dǎo)入項(xiàng)目。打開瀏覽器輸入網(wǎng)址:http://localhost/svn/project1 看看你剛提交了什么:)

    現(xiàn)在我們回顧一下新建一個項(xiàng)目的過程:首先必須使用svnadmin工具創(chuàng)建項(xiàng)目的資源庫,然后再導(dǎo)入項(xiàng)目文件。

    4.?訪問用戶的身份驗(yàn)證

    在確定對訪問用戶的權(quán)限控制之前,你必須規(guī)劃好是對整個資源庫中的所有項(xiàng)目還是單獨(dú)的某一個項(xiàng)目進(jìn)行統(tǒng)一的身份驗(yàn)證, 也就是我們前面講到的是使用SVNParentPath還是SVNPath的問題。

    最簡單的身份驗(yàn)證方式是使用Basic HTTP Authentication機(jī)制,該方式通過用戶名和口令對訪問用戶進(jìn)行身份驗(yàn)證。我們可以直接通過Apache提供的支持進(jìn)行設(shè)置。Apache提供一個htpasswd工具來管理用戶名和口令。接下來我們利用這個工具來添加兩個用戶。

    在命令行窗口中轉(zhuǎn)到Apache所在的目錄,假設(shè)是 D:\Apache\bin,執(zhí)行下列命令

    說明:創(chuàng)建用戶liudong1
    輸入:htpasswd –cm D:\svn\svn_auth_passwd liudong1
    說明:使用-c參數(shù)來創(chuàng)建一個passwd文件
    輸出:
    New password: *****
    Re-type new password: *****
    Adding password for user liudong1
    說明:創(chuàng)建用戶liudong2
    輸入:htpasswd –m D:\svn\svn_auth_passwd liudong2
    說明:passwd文件已經(jīng)創(chuàng)建,無需再使用-c參數(shù)
    輸出:
    New password: *****
    Re-type new password: *****
    Adding password for user liudong2

    打開D:\svn\svn_auth_passwd文件,密碼使用MD5加密過了,而且同樣的密碼加密出來的內(nèi)容卻不相同,估計(jì)跟用戶名也是有一點(diǎn)關(guān)系,內(nèi)容如下:

    liudong1:$apr1$5G3.....$x5jgK.sGp/Y3EFSXGMtoE.
    liudong2:$apr1$cG3.....$IM5m73cqw8N8ZsMcJnKeX.

    接下來我們必須告訴Apache服務(wù)器如何使用這個passwd文件,打開httpd.conf找到剛才我們添加的Location配置的位置,修改如下:

    BR>DAV svn
    SVNParentPath d:/svn/repository
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile d:/svn/svn_auth_passwd
    Require valid-user

    重新啟動Apache HTTP服務(wù)器,使用瀏覽器打開 http://localhost/svn/project1 你將會看到要求登錄的對話框如下圖所示(我所使用的是Opera 8瀏覽器),輸入你剛設(shè)置的用戶名和口令即可。

    這就是利用Basic HTTP Authentication機(jī)制對用戶進(jìn)行訪問控制的方法。你還可以使用SSL證書管理來加強(qiáng)Subversion的安全性(HTTPS的配置屬于Apache HTTP服務(wù)器的范疇,請參照Apache的文檔),甚至你可以對設(shè)置對某些操作才需要驗(yàn)證用戶的身份以及賦予不同用戶對不同目錄的操作權(quán)限,以及如何使用Windows的域帳號進(jìn)行身份的驗(yàn)證。這些內(nèi)容可以參考Subversion提供的文檔svn-book.pdf的第六章——服務(wù)器配置。

    以上介紹的是Subversion跟Apache結(jié)合提供基于HTTP方式的共享功能以及如何對用戶進(jìn)行身份的驗(yàn)證。接下來我們介紹大部分CVS用戶非常關(guān)系的——如何將現(xiàn)有的CVS資源庫移植到Subversion下。

    我們可以通過一個cvs2svn的工具來將CVS資源庫轉(zhuǎn)到Subversion服務(wù)器上。Cvs2svn是一個用Python寫的轉(zhuǎn)換腳本,它的作用是用來一次性的從CVS轉(zhuǎn)到Subversion,你不要指望它幫你同步CVS和Subversion資源庫。如果你并不需要項(xiàng)目的一些歷史修改信息,那么你最好先從CVS獲取最新版本,然后提交到Subversion資源庫中,這是最簡單直接而有效的方法。如果你需要保留CVS意見的所有修改記錄,那么接下來我們就是介紹如何通過cvs2svn來轉(zhuǎn)換你的資源庫。

    首先我們需要安裝Python,因?yàn)閏vs2svn是用Python寫的一些腳本。到 http://www.python.org/download/ 下載最新版本的Python for Windows的安裝程序python-2.4.1.msi,按照默認(rèn)的方式安裝Python,假設(shè)安裝目錄是C:\Python。接下來下載cvs2svn,下載地址是:http://cvs2svn.tigris.org/servlets/ProjectDocumentList?folderID=2976,用WinRAR解壓到任一個目錄下。打開命令行窗口轉(zhuǎn)到cvs2svn所在的目錄先測試一下python,執(zhí)行C:\python\python cvs2svn,這時(shí)候會輸出cvs2svn的幫助信息。

    由于cvs2svn用到了GUN sort工具,因此我們還必須到http://unxutils.sourceforge.net/ 下載UnxUtils.zip,把該壓縮包下的usr/local/wbin/sort.exe文件解壓到cvs2svn目錄中;同時(shí)我們還需要下載RCS的一個工具co.exe,到http://www.cs.purdue.edu/homes/trinkle/RCS/ 下載rcs57pc1.zip,把該壓縮包中的bin/win32下的rcslib.dll以及co.exe這兩個文件同樣解壓到cvs2svn目錄中。

    接下來我們開始轉(zhuǎn)換資源庫,輸入以下命令
    C:\Python\python cvs2svn –s d:\svn\repository\project1 project1

    其中我們假設(shè)project1是原有CVS資源庫中的一個項(xiàng)目。
    下面是在我的機(jī)器上轉(zhuǎn)換完畢后cvs2svn顯示詳細(xì)的統(tǒng)計(jì)信息:

    cvs2svn Statistics:
    ------------------
    Total CVS Files:???????????????? 7
    Total CVS Revisions:???????????? 7
    Total Unique Tags:?????????????? 0
    Total Unique Branches:?????????? 0
    CVS Repos Size in KB:???????? 2261
    Total SVN Commits:?????????????? 2
    First Revision Date:??? Sat Sep 03 15:05:26 2005
    Last Revision Date:???? Sat Sep 03 15:05:27 2005
    ------------------
    Timings:
    ------------------
    pass 1:???? 0 seconds
    pass 2:???? 0 seconds
    pass 3:???? 0 seconds
    pass 4:???? 0 seconds
    pass 5:???? 0 seconds
    pass 6:???? 0 seconds
    pass 7:???? 0 seconds
    pass 8:???? 1 second
    total:????? 3 seconds

    轉(zhuǎn)換完畢后我們用瀏覽器打開 http://localhost/svn/project1 即可看到

    點(diǎn)擊trunk鏈接就可以看到項(xiàng)目的所有文件,接下來可以把你需要轉(zhuǎn)換的項(xiàng)目重復(fù)執(zhí)行上面的步驟即可。

    以上是本文要介紹的內(nèi)容,涉及實(shí)際應(yīng)用中經(jīng)常要面臨的問題。以獨(dú)立服務(wù)方式運(yùn)行的Subversion其守護(hù)端口是3690,我們通過其跟Apache HTTP服務(wù)器結(jié)合使之可以方便的在互聯(lián)網(wǎng)上進(jìn)行資源庫的發(fā)布;同時(shí)對于現(xiàn)在正在使用CVS的用戶來講可以通過cvs2svn來轉(zhuǎn)換已有的資源庫到Subversion上,這可打消CVS用戶在考慮移植時(shí)候的顧慮。


    參考資料

    《用Subversion構(gòu)建版本控制環(huán)境》
    http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/
    Subversion的官方網(wǎng)站??http://subversion.tigris.org/
    CVS2SVN????http://cvs2svn.tigris.org/
    Apache網(wǎng)站????http://httpd.apache.org/
    Python官方網(wǎng)站???http://www.python.org/
    Windows域用戶驗(yàn)證模塊?http://tortoisesvn.tigris.org/mod_auth_sspi.zip

    posted on 2007-03-06 23:03 小石頭 閱讀(398) 評論(0)  編輯  收藏 所屬分類: Subversion
    主站蜘蛛池模板: 免费视频一区二区| 一个人看www在线高清免费看| 亚洲高清国产拍精品26U| 免费国产黄网站在线观看可以下载| 亚洲精品美女在线观看播放| 女人18毛片特级一级免费视频 | 一级看片免费视频| 久久久久亚洲AV片无码下载蜜桃 | 色妞WWW精品免费视频| 美女裸体无遮挡免费视频网站| 亚洲午夜久久久久久久久电影网 | 1a级毛片免费观看| 老司机午夜在线视频免费| 亚洲AV无码精品无码麻豆| 国内精品免费视频自在线| 在线毛片片免费观看| 亚洲欧美日韩中文无线码| 亚洲va中文字幕无码久久不卡| 免费无码看av的网站| 99精品免费观看| 免费一级特黄特色大片 | 成在线人免费无码高潮喷水| 亚洲一区二区三区四区视频 | 亚洲精品中文字幕无码AV| 亚洲国产精品嫩草影院久久| 日本黄网站动漫视频免费| 国产精品成人69XXX免费视频| 亚洲人成www在线播放| 亚洲AV乱码久久精品蜜桃 | 亚洲成a人片7777| 国产亚洲福利精品一区| 国产免费一区二区三区VR| 亚洲毛片免费视频| 国产成人免费AV在线播放 | 成全在线观看免费观看大全 | 一区二区三区免费看| 亚洲国产成人久久综合| 亚洲电影免费观看| 亚洲AV第一页国产精品| 亚洲综合无码精品一区二区三区| 免费理论片51人人看电影|