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

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

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

    漁人碼頭

    天行健,君子以自強(qiáng)不息。地勢(shì)坤,君子以厚德載物。
    posts - 12, comments - 16, trackbacks - 0, articles - 43
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Subversion(SVN)安裝使用指南 (轉(zhuǎn))

    Posted on 2007-02-06 12:13 Fisher 閱讀(745) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java應(yīng)用

    Subversion(SVN)安裝使用指南

    ※簡(jiǎn)述※

    Subversion是近期在開(kāi)源社區(qū)中非常流行的一款版本控制軟件,它是CVS的替代產(chǎn)物。

    它的主要特征有:

    • CVS大部分的功能。
    • 支持“目錄”級(jí)別的版本管理,并且解決了CVS中遲遲未能解決的文件重命名和移動(dòng)等問(wèn)題。甚至對(duì)文件或文件夾的屬性都提供了版本管理。
    • “提交(commit)”實(shí)現(xiàn)了真正意義上的原子操作。也就是類(lèi)似數(shù)據(jù)庫(kù)中的事務(wù)的功能。
    • 版本號(hào)依據(jù)每次提交而改變,不再針對(duì)每個(gè)文件。日志信息也是針對(duì)每次提交而設(shè)置。所以看到版本號(hào)是幾百或者幾千也不用太驚訝,表示方式不一樣罷了。
    • 通過(guò)WebDAV/DeltaV協(xié)議,可以與Apache的網(wǎng)絡(luò)服務(wù)無(wú)縫銜接(通過(guò)Apache來(lái)運(yùn)行)。這樣就能提供一些額外的功能,例如:認(rèn)證,壓縮傳輸,以及數(shù)據(jù)倉(cāng)庫(kù)(Repository,見(jiàn)下)的瀏覽等。
    • 也可以作為獨(dú)立服務(wù)器運(yùn)行,但這樣的話提供的功能較為簡(jiǎn)單薄弱。
    • 兩種運(yùn)行模式都支持SSH(當(dāng)然需要各自的支持和配置)
    • 降低了分支(Branch)和標(biāo)簽(tag)上的時(shí)間消耗。底層設(shè)計(jì)理念和實(shí)現(xiàn)上的不同,不細(xì)說(shuō)了。
    • 時(shí)間消耗依據(jù)的是文件改變部分的大小,而不是數(shù)據(jù)總量。
    • 創(chuàng)建數(shù)據(jù)倉(cāng)庫(kù)時(shí),用戶(hù)可以指定是使用內(nèi)嵌的 BerkeleyDB 數(shù)據(jù)庫(kù),還是特定格式的文件系統(tǒng)。

    其他還有些零星的小功能,具體可以參閱: http://subversion.tigris.org/roadmap.html

    這里解釋一下 數(shù)據(jù)倉(cāng)庫(kù) 的概念:
    一個(gè)數(shù)據(jù)倉(cāng)庫(kù)對(duì)應(yīng)的可以是一個(gè)項(xiàng)目,也可以是多個(gè)項(xiàng)目。SVN是基于數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行管理的。
    按照用戶(hù)習(xí)慣,可以只在每個(gè)數(shù)據(jù)倉(cāng)庫(kù)內(nèi)僅放置一個(gè)項(xiàng)目的內(nèi)容。

    ※下載※

    Subversion 1.2.3:
    http://subversion.tigris.org/project_packages.html
    (SVN的Server端,分不同操作系統(tǒng)的版本,這里我下載的是for windows及for linux的)

    TortoiseSVN:
    http://tortoisesvn.tigris.org/download.html
    (windows下的SVN客戶(hù)端,以shell方式集成在系統(tǒng)右鍵菜單中)

    Apache 2.0.55:
    http://httpd.apache.org/download.cgi
    (視操作系統(tǒng)而下)

    ※安裝使用※

    下面說(shuō)一下安裝,分兩種平臺(tái)(windows,linux)及兩種模式(與Apache綁定 vs. Stand-alone)
    具體在Apache上的配置倒是大同小異。

    另外,SVN是支持SSL的,但是這個(gè)配置牽涉到其他太多東西,本文就不過(guò)多涉及了。真的有需要可以參考SVN的手冊(cè)(英文)。

    方便起見(jiàn),用幾個(gè)變量代表具體的值,請(qǐng)自行加以調(diào)整:

    %SystemRoot% — windows的系統(tǒng)所在目錄,一般類(lèi)似這樣:C:\WINNT
    %SVN_HOME% — SVN的安裝目錄
    %SVN_REPO_PARENT% — SVN所有數(shù)據(jù)倉(cāng)庫(kù)的根目錄(就是存放全部版本文件的總目錄)
    %PROJECT_NAME% — 項(xiàng)目名,嚴(yán)格的來(lái)說(shuō)它對(duì)應(yīng)的是一個(gè)數(shù)據(jù)倉(cāng)庫(kù),但是這里遵從用戶(hù)習(xí)慣,以項(xiàng)目名稱(chēng)方式來(lái)命名。
    %SERVER_NAME_OR_IP% — 服務(wù)器名或IP地址
    %APACHE_HOME% — Apache2的安裝路徑

    另外,安裝過(guò)程默認(rèn)使用文件系統(tǒng)做后臺(tái)數(shù)據(jù)庫(kù),文中不再加以說(shuō)明。如需使用BerkeleyDB,請(qǐng)自行參考SVN文檔。

    Windows上的服務(wù)器端安裝
    ____________________________________________

    1.雙擊下載得來(lái)的”svn-1.2.3-setup.exe”并安裝到”%SVN_HOME%”

    2.安裝完畢后,”%SVN_HOME%\bin”應(yīng)該已經(jīng)自動(dòng)加入到系統(tǒng)路徑(%PATH%)中。如果沒(méi)有,請(qǐng)手工添加。

    3.用命令行來(lái)測(cè)試安裝結(jié)果是否正確:

    1. cmd
    2. svnadmin

    如果返回這樣的錯(cuò)誤信息:”svnadmin.exe - Unable To Locate DLL”,那就需要嘗試一下步驟的中的一種或幾種:
    安裝VC++ 6.0(主要是安裝VC的運(yùn)行庫(kù))
    或者直接從別的機(jī)器上拷貝一個(gè)”msvcp60.dll”文件到本機(jī)的”%SystemRoot%\system32″下

    4.使用以下命令創(chuàng)建一個(gè)數(shù)據(jù)倉(cāng)庫(kù),用來(lái)存放項(xiàng)目的源代碼和其他文件:

    1. cmd
    2. svnadmin ? create %SVN_REPO_PARENT %\ %PROJECT_NAME %

    5.其中%SVN_REPO_PARENT%是包含所有數(shù)據(jù)倉(cāng)庫(kù)的目錄,%PROJECT_NAME%是所創(chuàng)建的數(shù)據(jù)倉(cāng)庫(kù)對(duì)應(yīng)的項(xiàng)目名。


    *************************
    * 以 Stand-alone 模式運(yùn)行 *
    *************************

    6.從命令行啟動(dòng)SVN Server:

    1. cmd
    2. svnserve - d - r ? %SVN_REPO_PARENT %

    注意里面的參數(shù) r 限定了瀏覽全部數(shù)據(jù)倉(cāng)庫(kù)的根目錄

    當(dāng)然如果覺(jué)得每次這樣啟動(dòng)太麻煩的話,也有SVN Serveice的包裝程序(http://dark.clansoft.dk/~mbn/svnservice/)。通過(guò)它能夠以windows service的方式運(yùn)行SVN Server(其本質(zhì)還是Stand-alone),運(yùn)行起來(lái)相對(duì)比較方便。

    7.創(chuàng)建用戶(hù)數(shù)據(jù)庫(kù)(其實(shí)就是一個(gè)txt文本,就叫它”users.conf”吧,你也可以改名),保存到
    %SVN_REPO_PARENT%\%PROJECT_NAME%\conf
    目錄(那個(gè)conf子文件夾在創(chuàng)建數(shù)據(jù)倉(cāng)庫(kù)時(shí)已被自動(dòng)創(chuàng)建好),然后在這個(gè)文件內(nèi)添加需要的用戶(hù)名和密碼。基本的樣例如下:

    1. [ users ]
    2. your_username = your_password

    注意這里密碼是明文存放的,所以也是這種方式的不足之處。

    8.在”%SVN_REPO_PARENT%\%PROJECT_NAME%\conf”目錄下找到這個(gè)”svnserve.conf”文件,用任何文本編輯器打開(kāi),為剛才創(chuàng)建的那些用戶(hù)添加讀寫(xiě)權(quán)限:

    1. [ general ]
    2. anon - access = none ? ? ? ? ? ? ? # 匿名訪問(wèn)權(quán)限
    3. auth - access = write ? ? ? ? ? ?? # 認(rèn)證用戶(hù)的權(quán)限
    4. password - db = users . conf ? ? ? ? # 認(rèn)證用戶(hù)數(shù)據(jù)庫(kù)
    5. realm = Anything ? you want , but generally we use " %PROJECT_NAME% " ?? # 在用戶(hù)認(rèn)證界面上出現(xiàn)的提示語(yǔ)句

    里面的”users.conf”就是剛才在第7步創(chuàng)建的用戶(hù)文件。

    9.最后,重啟SVN Server(什么?你不知道怎么重啟?關(guān)掉窗口再重新用命令行啟動(dòng)啦;包裝成Service的話么就更加簡(jiǎn)單了)

    現(xiàn)在已經(jīng)可以使用客戶(hù)端來(lái)連接SVN Server,進(jìn)行import等操作了。
    連接Server的URL應(yīng)該是類(lèi)似這樣的:

    1. svn :// %SERVER_NAME_OR_IP %/ %PROJECT_NAME %

    具體步驟,請(qǐng)參閱第20步。


    ************************
    * 以Apache的模塊方式運(yùn)行 *
    ************************

    10.首先要了解的是SVN設(shè)計(jì)的時(shí)候只考慮了兼容Apache2.x,所以在Apache1.x下是不能正常工作的。

    11.安裝Apache2
    如果事先啟動(dòng)了IIS之類(lèi)的其他webserver,請(qǐng)先停止那些服務(wù)(端口被占用會(huì)導(dǎo)致Apache安裝失敗)。
    其他問(wèn)題可以參考Apache的安裝手冊(cè)。
    這里假設(shè)安裝目錄為:%APACHE_HOME%

    12.檢查Apache2的安裝是否成功
    打開(kāi)瀏覽器,訪問(wèn): http://localhost/
    如果出現(xiàn)的是默認(rèn)的歡迎頁(yè)面,那就沒(méi)有問(wèn)題了。否則請(qǐng)仔細(xì)檢查,重新安裝。

    13.打開(kāi)Apache的配置文件: “%APACHE_HOME%\conf\httpd.conf”
    查找”LoadModule”這個(gè)關(guān)鍵字,找到導(dǎo)入模塊的區(qū)塊(section)
    反注釋掉下面這樣,從而加載Subversion所需要的DAV模塊:

    1. # LoadModule dav_module modules/mod_dav.so

    完成之后看起來(lái)應(yīng)該是這樣:

    1. LoadModule dav_module modules / mod_dav . so

    另外在這行下面再添加兩行(請(qǐng)注意把路徑中的”\”替換成”/”):

    1. LoadModule dav_svn_module %SVN_HOME %/ bin / mod_dav_svn . so
    2. LoadModule ? authz_svn_module %SVN_HOME %/ bin / mod_authz_svn . so

    特別需要注意的是:由于模塊依賴(lài)關(guān)系,這三行的出現(xiàn)順序千萬(wàn)不能顛倒

    14.再來(lái)配置一下”httpd.conf”的其他部分,告訴Apache2 SVN的數(shù)據(jù)倉(cāng)庫(kù)所在。
    (為避免不必要的麻煩,所有路徑中的”\”都請(qǐng)?zhí)鎿Q成”/”)
    注意:

    • 按照下述配置,所有數(shù)據(jù)倉(cāng)庫(kù)將共享密碼文件及權(quán)限文件
    • 如果需要為每個(gè)數(shù)據(jù)倉(cāng)庫(kù)創(chuàng)建獨(dú)立的設(shè)置,請(qǐng)查閱SVN的文檔(”Authorization Option”章節(jié))

    添加下述內(nèi)容:

    1. < Location / svn>
    2. ? DAV svn
    3. ? SVNParentPath %SVN_REPO_PARENT%
    4. ? #設(shè)置通過(guò)瀏覽器訪問(wèn)Repository時(shí)的XML格式文件,可以省略
    5. ? SVNIndexXSLT " /s vnindex . xsl "
    6. ? # 存取權(quán)限控制文件所在地
    7. ? AuthzSVNAccessFile %SVN_REPO_PARENT%/AccessFile
    8. ? ?
    9. ? # 先嘗試匿名操作,如有必要再轉(zhuǎn)向用戶(hù)認(rèn)證
    10. ? Satisfy Any
    11. ? Require valid-user
    12. ? ?
    13. ? # 如何驗(yàn)證用戶(hù)
    14. ? AuthType Basic
    15. ? AuthName " Anything ? you want , but generally we use %PROJECT_NAME % "
    16. ? AuthUserFile %SVN_REPO_PARENT%/passwd
    17. ? #輸出時(shí)調(diào)用Apache的Deflate模塊,必須有啟用此模塊才能這樣配,否則刪除此行
    18. ? SetOutputFilter DEFLATE
    19. </Location>

    這里涉及到兩個(gè)文件: “%SVN_REPO_PARENT%/AccessFile” 及 “%SVN_REPO_PARENT%/passwd”.
    并不一定非要放到”%SVN_REPO_PARENT%”目錄下,我圖方便而已。覺(jué)得不安全可以移到另外地方。
    這兩個(gè)文件里面具體內(nèi)容的設(shè)置請(qǐng)參考第16和17步。

    15.保存”httpd.conf”并退出,這里Apache2的配置告一段落。

    16.”%SVN_REPO_PARENT%/AccessFile”文件的內(nèi)容

    1. [ / ]
    2. * = r
    3. user1 = rw
    4. user2 = r
    5. admin = rw
    6. [ %PROJECT_NAME %:/ src / test ]
    7. user2 = rw

    其中:

    • [/] 指代所有數(shù)據(jù)倉(cāng)庫(kù)的根目錄,匿名用戶(hù)默認(rèn)的權(quán)限為只讀。
    • 對(duì)于”user1″和”admin”,他們對(duì)所有數(shù)據(jù)倉(cāng)庫(kù)都有讀寫(xiě)權(quán)限。
    • 對(duì)于”user2″,它對(duì)所有數(shù)據(jù)倉(cāng)庫(kù)僅有只讀權(quán)限。但是下方又額外指定了他對(duì)”%PROJECT_NAME%:/src/test”目錄具有讀寫(xiě)權(quán)限。
    • 綜上,他對(duì)’test’目錄及其子目錄(自動(dòng)繼承,除非特別指定) 具有讀寫(xiě)權(quán)限,其他則均為只讀權(quán)限。

    你可以根據(jù)需要來(lái)設(shè)定不同的權(quán)限,更詳細(xì)的說(shuō)明還需要參考SVN文檔中的權(quán)限設(shè)置章節(jié)。

    17.”%SVN_REPO_PARENT%/passwd”文件的內(nèi)容
    這個(gè)文件是通過(guò)”%APACHE_HOME%\bin\htpasswd.exe”自動(dòng)生成的:

    1. cmd
    2. cd / D %APACHE_HOME%\bin
    3. # 參數(shù)c僅在第一次運(yùn)行時(shí)使用,用來(lái)創(chuàng)建一個(gè)新文件
    4. htpasswd –cm %SVN_REPO_PARENT%\passwd user1
    5. # 以后添加用戶(hù)可用此命令,參數(shù)m表明需要加密
    6. htpasswd –m %SVN_REPO_PARENT%\passwd user2

    此時(shí)用文本編輯器打開(kāi)”%SVN_REPO_PARENT%/passwd”,可以看到里面內(nèi)容是類(lèi)似這樣的:

    1. admin : $apr1$HLWV7 /.. $upZwVGvge 0 sc28fEp7mGM0
    2. user1 : $apr1$8 sbRo ... $hNMdkTvO4t8POVmOkV3Vg .
    3. user2 : $apr1$ZXzcE /.. $5 Ir0V8VQQtNYTNnnOp . EU1

    18.把SVN自帶的XSLT文件拷貝到網(wǎng)站根目錄,
    然后設(shè)置合理權(quán)限(windows平臺(tái)則不必考慮)

    1. #這里假設(shè)你的網(wǎng)站根目錄是? /var/www/html
    2. mv / tmp /s ubversion - 1.2.3 / tools / xslt / svnindex * / var / www / html
    3. chown ? apache : apache / var / www / html / svnindex *
    4. chmod ? 644 / var / www / html / svnindex *
    5. #設(shè)置所有者和權(quán)限(將權(quán)限賦給apache運(yùn)行的用戶(hù)身份)
    6. chown - R ? apache : apache %SVN_REPO_PARENT %
    7. chmod - R ? 766 %SVN_REPO_PARENT %

    19. 重啟Apache2服務(wù):

    1. cmd
    2. net ? stop Apache2
    3. net ? start Apache2

    20.打開(kāi)瀏覽器,訪問(wèn):http://%SERVER_NAME_OR_IP%/svn/
    如果返回的頁(yè)面是”403 Forbidden”,可能是由于Apache2默認(rèn)沒(méi)有打開(kāi)目錄的瀏覽權(quán)限(Option Indexes,參閱Apache2文檔),但這并不影響使用。
    現(xiàn)在已經(jīng)可以用客戶(hù)端導(dǎo)入項(xiàng)目并開(kāi)始使用了。
    具體步驟,請(qǐng)參閱第20步。


    ***********************************************
    * 注意:以下步驟/命令需要在裝有SVN客戶(hù)端的機(jī)器上執(zhí)行 *
    * Windows下安裝服務(wù)器端的時(shí)候已經(jīng)同時(shí)安裝了客戶(hù)端 *
    * Linux下尚待查證。 *
    ***********************************************

    21.和CVS一樣,SVN在最初的時(shí)候需要將已有項(xiàng)目導(dǎo)入到數(shù)據(jù)庫(kù)中。
    從命令行執(zhí)行以下命令(Stand-alone):

    1. svn import c :\ temp \ myproject svn :// %SERVER_NAME_OR_IP %/ %PROJECT_NAME % - m " initial import " -- username your_username -- password your_password

    或者(Apache2 module):

    1. svn import c :\ temp \ myproject http :// %SERVER_NAME_OR_IP %/ svn / %PROJECT_NAME % - m " initial import " -- username your_username -- password your_password

    其中:
    A) c:\temp\myproject里面包含了你所要導(dǎo)入的項(xiàng)目文件的內(nèi)容
    B) %SERVER_NAME_OR_IP%是SVN Server的名字或者IP地址,上面存有第5步中創(chuàng)建的數(shù)據(jù)倉(cāng)庫(kù)
    C) %PROJECT_NAME%是要導(dǎo)入到的數(shù)據(jù)倉(cāng)庫(kù)名稱(chēng),這里選擇跟項(xiàng)目名一致
    D) 參數(shù) m 表明此次導(dǎo)入操作的注釋?zhuān)琒VN的注釋是按每次提交來(lái)定義的,導(dǎo)入也是提交的一種。
    E) your_username和your_password是第7和17步創(chuàng)建的用戶(hù)及密碼,注意該用戶(hù)必須對(duì)上面的%PROJECT_NAME%數(shù)據(jù)倉(cāng)庫(kù)有寫(xiě)權(quán)限才能成功。

    22.然后,需要從Server端再次checkout到本地:
    (這點(diǎn)感覺(jué)不是太方便,為啥不做成import的時(shí)候有個(gè)選項(xiàng),本地目錄可以自動(dòng)生成版本信息呢?)

    1. cmd
    2. cd / D anywhere_you_want_to_put_your_versioned_project_files
    3. svn co svn: / / myserver / myproject / trunk . -- username ? your_username -- password your_password

    注意:
    “co”是”checkout”的一個(gè)別名
    那個(gè)點(diǎn)[.]代表當(dāng)前目錄,checkout出來(lái)的文件會(huì)自動(dòng)放到這個(gè)目錄下。也可以改為某個(gè)絕對(duì)路徑。

    23.對(duì)于向SVN Serer增加,移動(dòng),刪除,或者修改后提交某些文件,參考使用以下命令:

    1. Add :? ? svn add src / myfile . java - m " adding a file "
    2. Move :? ? svn ? move src / myfile . java src / mynewfile . java - m " moved myfile.java to mynewfile.java "
    3. Delete :? ? svn ? delete src / myfile . java - m " removing a file "
    4. Commit :? ? svn ? commit src / myfile . java - m " the message "

    對(duì)于上面的客戶(hù)端操作,如果安裝了TortoiseSVN,一切就變得簡(jiǎn)單多了。
    不過(guò)這個(gè)就要抓圖來(lái)說(shuō)明了。等有空的時(shí)候再放上來(lái)。

    ※總結(jié)※

    使用Eclipse的朋友還可以參考這里: http://subclipse.tigris.org/
    它以插件的形式向Eclipse提供了SVN的支持。

    另外,具體的設(shè)置,參數(shù)說(shuō)明等還是需要自己去查閱SVN的文檔(在安裝server端的時(shí)候已經(jīng)附帶)

    參考文獻(xiàn)及資料:
    _________________________________________

    http://subversion.tigris.org/
    http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/
    http://www.javayou.com/showlog.jspe?log_id=972

    主站蜘蛛池模板: 337p日本欧洲亚洲大胆人人| 69式国产真人免费视频| 亚洲综合综合在线| 免费涩涩在线视频网| 两个人看的www高清免费观看| 亚洲美女一区二区三区| 免费乱理伦在线播放| 99在线热视频只有精品免费| 亚洲国产美女精品久久久| 亚洲人成亚洲人成在线观看| 国产免费看JIZZ视频| eeuss草民免费| 亚洲久悠悠色悠在线播放| 国产精品亚洲精品日韩已满| 在线免费观看a级片| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久精品国产亚洲AV蜜臀色欲| 亚洲性日韩精品一区二区三区| 国产成在线观看免费视频| 在线免费观看h片| 亚洲AV无码国产一区二区三区| 亚洲国产综合精品中文第一区| www国产亚洲精品久久久| 青青青国产在线观看免费网站 | 亚洲黄色网站视频| 亚洲一区二区精品视频| 女人18毛片a级毛片免费视频| 桃子视频在线观看高清免费视频| 午夜不卡AV免费| 亚洲区日韩精品中文字幕| 亚洲色图综合网站| 亚洲精品~无码抽插| 又粗又黄又猛又爽大片免费 | 色多多www视频在线观看免费| 亚洲图片激情小说| 亚洲Av永久无码精品三区在线| 亚洲精品国产精品国自产观看| 成人免费a级毛片无码网站入口| 99久久综合精品免费| a国产成人免费视频| 国产成人自产拍免费视频|