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

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

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

    hengheng123456789

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

     
    Subversion(SVN)安裝使用指南

    From:http://blog.csdn.net/mervyn/articles/928589.aspx

    ※簡述※

    Subversion是近期在開源社區中非常流行的一款版本控制軟件,它是CVS的替代產物。

    它的主要特征有:

    CVS大部分的功能。
    支持“目錄”級別的版本管理,并且解決了CVS中遲遲未能解決的文件重命名和移動等問題。甚至對文件或文件夾的屬性都提供了版本管理。
    “提交(commit)”實現了真正意義上的原子操作。也就是類似數據庫中的事務的功能。
    版本號依據每次提交而改變,不再針對每個文件。日志信息也是針對每次提交而設置。所以看到版本號是幾百或者幾千也不用太驚訝,表示方式不一樣罷了。
    通過WebDAV/DeltaV協議,可以與Apache的網絡服務無縫銜接(通過Apache來運行)。這樣就能提供一些額外的功能,例如:認證,壓縮傳輸,以及數據倉庫(Repository,見下)的瀏覽等。
    也可以作為獨立服務器運行,但這樣的話提供的功能較為簡單薄弱。
    兩種運行模式都支持SSH(當然需要各自的支持和配置)
    降低了分支(Branch)和標簽(tag)上的時間消耗。底層設計理念和實現上的不同,不細說了。
    時間消耗依據的是文件改變部分的大小,而不是數據總量。
    創建數據倉庫時,用戶可以指定是使用內嵌的 BerkeleyDB 數據庫,還是特定格式的文件系統。
    其他還有些零星的小功能,具體可以參閱: http://subversion.tigris.org/roadmap.html

    這里解釋一下數據倉庫的概念:
    一個數據倉庫對應的可以是一個項目,也可以是多個項目。SVN是基于數據倉庫進行管理的。
    按照用戶習慣,可以只在每個數據倉庫內僅放置一個項目的內容。

    ※下載※

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

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

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

    ※安裝使用※

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

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

    方便起見,用幾個變量代表具體的值,請自行加以調整:

    %SystemRoot% — windows的系統所在目錄,一般類似這樣:C:"WINNT
    %SVN_HOME% — SVN的安裝目錄
    %SVN_REPO_PARENT% — SVN所有數據倉庫的根目錄(就是存放全部版本文件的總目錄)
    %PROJECT_NAME% — 項目名,嚴格的來說它對應的是一個數據倉庫,但是這里遵從用戶習慣,以項目名稱方式來命名。
    %SERVER_NAME_OR_IP% — 服務器名或IP地址
    %APACHE_HOME% — Apache2的安裝路徑

    另外,安裝過程默認使用文件系統做后臺數據庫,文中不再加以說明。如需使用BerkeleyDB,請自行參考SVN文檔。

    Windows上的服務器端安裝
    ____________________________________________

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

    2.安裝完畢后,”%SVN_HOME%"bin”應該已經自動加入到系統路徑(%PATH%)中。如果沒有,請手工添加。

    3.用命令行來測試安裝結果是否正確:

    1.        cmd

    2.        svnadmin

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

    4.使用以下命令創建一個數據倉庫,用來存放項目的源代碼和其他文件:

    1.        cmd

    2.        svnadmin create%SVN_REPO_PARENT%"%PROJECT_NAME%

    5.其中%SVN_REPO_PARENT%是包含所有數據倉庫的目錄,%PROJECT_NAME%是所創建的數據倉庫對應的項目名。


    *************************
    * 以 Stand-alone 模式運行 *
    *************************

    6.從命令行啟動SVN Server:

    1.        cmd

    2.        svnserve -d -r %SVN_REPO_PARENT%

    注意里面的參數 r 限定了瀏覽全部數據倉庫的根目錄

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

    7.創建用戶數據庫(其實就是一個txt文本,就叫它”users.conf”吧,你也可以改名),保存到
    %SVN_REPO_PARENT%"%PROJECT_NAME%"conf
    目錄(那個conf子文件夾在創建數據倉庫時已被自動創建好),然后在這個文件內添加需要的用戶名和密碼。基本的樣例如下:

    1.        [users]

    2.        your_username = your_password

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

    8.在”%SVN_REPO_PARENT%"%PROJECT_NAME%"conf”目錄下找到這個”svnserve.conf”文件,用任何文本編輯器打開,為剛才創建的那些用戶添加讀寫權限:

    1.        [general]

    2.        anon-access = none              # 匿名訪問權限

    3.        auth-access = write             # 認證用戶的權限

    4.        password-db = users.conf        # 認證用戶數據庫

    5.        realm = Anything youwant, butgenerallyweuse "%PROJECT_NAME%"   # 在用戶認證界面上出現的提示語句

    里面的”users.conf”就是剛才在第7步創建的用戶文件。

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

    現在已經可以使用客戶端來連接SVN Server,進行import等操作了。
    連接Server的URL應該是類似這樣的:

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

    具體步驟,請參閱第20步。


    ************************
    * 以Apache的模塊方式運行 *
    ************************

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

    11.安裝Apache2
    如果事先啟動了IIS之類的其他webserver,請先停止那些服務(端口被占用會導致Apache安裝失敗)。
    其他問題可以參考Apache的安裝手冊。
    這里假設安裝目錄為:%APACHE_HOME%

    12.檢查Apache2的安裝是否成功
    打開瀏覽器,訪問: http://localhost/
    如果出現的是默認的歡迎頁面,那就沒有問題了。否則請仔細檢查,重新安裝。

    13.打開Apache的配置文件: “%APACHE_HOME%"conf"httpd.conf”
    查找”LoadModule”這個關鍵字,找到導入模塊的區塊(section)
    反注釋掉下面這樣,從而加載Subversion所需要的DAV模塊:

    1.        # LoadModule dav_module modules/mod_dav.so

    完成之后看起來應該是這樣:

    1.        LoadModuledav_modulemodules/mod_dav.so

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

    1.        LoadModuledav_svn_module%SVN_HOME%/bin/mod_dav_svn.so

    2.        LoadModule authz_svn_module%SVN_HOME%/bin/mod_authz_svn.so

    特別需要注意的是:由于模塊依賴關系,這三行的出現順序千萬不能顛倒。

    14.再來配置一下”httpd.conf”的其他部分,告訴Apache2 SVN的數據倉庫所在。
    (為避免不必要的麻煩,所有路徑中的”"”都請替換成”/”)
    注意:

    按照下述配置,所有數據倉庫將共享密碼文件及權限文件
    如果需要為每個數據倉庫創建獨立的設置,請查閱SVN的文檔(”Authorization Option”章節)
    添加下述內容:

    1.        <Location /svn>

    2.        

    3.          DAV svn

    4.          SVNParentPath %SVN_REPO_PARENT%

    5.        

    6.          #設置通過瀏覽器訪問Repository時的XML格式文件,可以省略

    7.          SVNIndexXSLT "/svnindex.xsl"

    8.        

    9.          # 存取權限控制文件所在地

    10.        AuthzSVNAccessFile %SVN_REPO_PARENT%/AccessFile

    11.         

    12.        # 先嘗試匿名操作,如有必要再轉向用戶認證

    13.        Satisfy Any

    14.        Require valid-user

    15.         

    16.        # 如何驗證用戶

    17.        AuthType Basic

    18.        AuthName "Anything youwant, butgenerallyweuse %PROJECT_NAME%"

    19.        AuthUserFile %SVN_REPO_PARENT%/passwd

    20.      

    21.        #輸出時調用Apache的Deflate模塊,必須有啟用此模塊才能這樣配,否則刪除此行

    22.        SetOutputFilter DEFLATE

    23.      

    24.      </Location>

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

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

    16.”%SVN_REPO_PARENT%/AccessFile”文件的內容

    1.        [/]

    2.        * = r

    3.        user1 = rw

    4.        user2 = r

    5.        admin = rw

    6.        

    7.        [%PROJECT_NAME%:/src/test]

    8.        user2 = rw

    其中:

    [/] 指代所有數據倉庫的根目錄,匿名用戶默認的權限為只讀。
    對于”user1″和”admin”,他們對所有數據倉庫都有讀寫權限。
    對于”user2″,它對所有數據倉庫僅有只讀權限。但是下方又額外指定了他對”%PROJECT_NAME%:/src/test”目錄具有讀寫權限。
    綜上,他對’test’目錄及其子目錄(自動繼承,除非特別指定)具有讀寫權限,其他則均為只讀權限。
    你可以根據需要來設定不同的權限,更詳細的說明還需要參考SVN文檔中的權限設置章節。

    17.”%SVN_REPO_PARENT%/passwd”文件的內容
    這個文件是通過”%APACHE_HOME%"bin"htpasswd.exe”自動生成的:

    1.        cmd

    2.        cd /D %APACHE_HOME%"bin

    3.        # 參數c僅在第一次運行時使用,用來創建一個新文件

    4.        htpasswd –cm %SVN_REPO_PARENT%"passwd user1

    5.        # 以后添加用戶可用此命令,參數m表明需要加密

    6.        htpasswd –m %SVN_REPO_PARENT%"passwd user2

    此時用文本編輯器打開”%SVN_REPO_PARENT%/passwd”,可以看到里面內容是類似這樣的:

    1.        admin:$apr1$HLWV7/..$upZwVGvge0sc28fEp7mGM0

    2.        user1:$apr1$8sbRo...$hNMdkTvO4t8POVmOkV3Vg.

    3.        user2:$apr1$ZXzcE/..$5Ir0V8VQQtNYTNnnOp.EU1

    18.把SVN自帶的XSLT文件拷貝到網站根目錄,
    然后設置合理權限(windows平臺則不必考慮)

    1.        #這里假設你的網站根目錄是  /var/www/html

    2.        mv /tmp/subversion-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.        

    6.        #設置所有者和權限(將權限賦給apache運行的用戶身份)

    7.        chown -R apache:apache%SVN_REPO_PARENT%

    8.        chmod -R 766%SVN_REPO_PARENT%

    19. 重啟Apache2服務:

    1.        cmd

    2.        net stopApache2

    3.        net startApache2

    20.打開瀏覽器,訪問:http://%SERVER_NAME_OR_IP%/svn/
    如果返回的頁面是”403 Forbidden”,可能是由于Apache2默認沒有打開目錄的瀏覽權限(Option Indexes,參閱Apache2文檔),但這并不影響使用。
    現在已經可以用客戶端導入項目并開始使用了。
    具體步驟,請參閱第20步。


    ***********************************************
    * 注意:以下步驟/命令需要在裝有SVN客戶端的機器上執行 *
    * Windows下安裝服務器端的時候已經同時安裝了客戶端 *
    * Linux下尚待查證。 *
    ***********************************************

    21.和CVS一樣,SVN在最初的時候需要將已有項目導入到數據庫中。
    從命令行執行以下命令(Stand-alone):

    1.        svnimportc:"temp"myprojectsvn://%SERVER_NAME_OR_IP%/%PROJECT_NAME% -m"initial import" --usernameyour_username --passwordyour_password

    或者(Apache2 module):

    1.        svnimportc:"temp"myprojecthttp://%SERVER_NAME_OR_IP%/svn/%PROJECT_NAME% -m"initial import" --usernameyour_username --passwordyour_password

    其中:
    A) c:"temp"myproject里面包含了你所要導入的項目文件的內容
    B) %SERVER_NAME_OR_IP%是SVN Server的名字或者IP地址,上面存有第5步中創建的數據倉庫
    C) %PROJECT_NAME%是要導入到的數據倉庫名稱,這里選擇跟項目名一致
    D) 參數 m 表明此次導入操作的注釋,SVN的注釋是按每次提交來定義的,導入也是提交的一種。
    E) your_username和your_password是第7和17步創建的用戶及密碼,注意該用戶必須對上面的%PROJECT_NAME%數據倉庫有寫權限才能成功。

    22.然后,需要從Server端再次checkout到本地:
    (這點感覺不是太方便,為啥不做成import的時候有個選項,本地目錄可以自動生成版本信息呢?)

    1.        cmd

    2.        cd /D anywhere_you_want_to_put_your_versioned_project_files

    3.        svn co svn://myserver/myproject/trunk . --username your_username --passwordyour_password

    注意:
    “co”是”checkout”的一個別名
    那個點[.]代表當前目錄,checkout出來的文件會自動放到這個目錄下。也可以改為某個絕對路徑。

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

    1.        Add:    svnaddsrc/myfile.java -m"adding a file"

    2.        Move:    svn movesrc/myfile.javasrc/mynewfile.java -m"moved myfile.java to mynewfile.java"

    3.        Delete:    svn deletesrc/myfile.java -m"removing a file"

    4.        Commit:    svn commitsrc/myfile.java -m"the message"

    對于上面的客戶端操作,如果安裝了TortoiseSVN,一切就變得簡單多了。
    不過這個就要抓圖來說明了。等有空的時候再放上來。

    ※總結※

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

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

    參考文獻及資料:
    _________________________________________

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

    posted on 2007-09-03 15:56 哼哼 閱讀(495) 評論(0)  編輯  收藏 所屬分類: JAVA-Common
    主站蜘蛛池模板: 欧洲美女大片免费播放器视频| 亚洲国产精品久久久久婷婷软件| 24小时免费直播在线观看| 99久久99热精品免费观看国产| 亚洲午夜免费视频| 麻豆成人久久精品二区三区免费 | 亚洲国产精品嫩草影院在线观看| 亚洲精品国精品久久99热| 亚洲欧洲日产国码一级毛片| 亚洲精品成人片在线观看| 国产亚洲午夜高清国产拍精品| 国产综合亚洲专区在线| 精品亚洲综合在线第一区| 久久精品国产亚洲av成人| 亚洲人成影院在线| 亚洲AV综合色区无码二区爱AV| 在线aⅴ亚洲中文字幕| 国产精品亚洲AV三区| 午夜在线免费视频| 美女视频黄的免费视频网页 | jyzzjyzz国产免费观看| 二区久久国产乱子伦免费精品| 免费a级毛片无码a∨免费软件| 91人成网站色www免费下载| 三年片在线观看免费观看高清电影| 成人男女网18免费视频| 国产成人aaa在线视频免费观看| 亚洲精品无码久久久| 亚洲成av人在线视| 亚洲国产午夜电影在线入口| 亚洲jizzjizz少妇| a级毛片毛片免费观看永久| 亚洲综合免费视频| 国产网站在线免费观看| 国产亚洲大尺度无码无码专线| 亚洲一区二区影院| 亚洲精品国产suv一区88| 精品熟女少妇aⅴ免费久久| 亚洲免费在线播放| 成人免费无码精品国产电影| 国产亚洲婷婷香蕉久久精品 |