空間站

          北極心空

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          在linux下安裝配置svn獨(dú)立服務(wù)器
            subversion(以下簡(jiǎn)稱svn)是近年來(lái)崛起的版本管理工具,是cvs的接班人。
            svn服務(wù)器有2種運(yùn)行方式:獨(dú)立服務(wù)器和借助apache。2種方式各有利弊。
            svn存儲(chǔ)版本數(shù)據(jù)也有2種方式:BDB和FSFS。因?yàn)锽DB方式在服務(wù)器中斷時(shí),有可能鎖住數(shù)據(jù)(我在搞ldap時(shí)就深受其害,沒(méi)法根治),所以還是FSFS方式更安全一點(diǎn)。
          1. svn服務(wù)器安裝
          操作系統(tǒng): Redhat Linux AS4
          安裝包獲取:
          編譯:
          以root用戶登錄。
          將subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz傳到服務(wù)器。
          tar xfvz subversion-1.4.0.tar.gz
          tar xfvz subversion-deps-1.4.0.tar.gz
          cd subversion-1.4.0
          ./configure --prefix=/opt/svn --without-berkeley-db –with-zlib
          (注:以svnserve方式運(yùn)行,不加apache編譯參數(shù)。以fsfs格式存儲(chǔ)版本庫(kù),不編譯berkeley-db)
          make clean
          make
          make install
          vi /etc/profile,在/etc/profile最后加入:
          PATH=$PATH:/opt/svn/bin
          export PATH
          測(cè)試:
          svnserve –version
          如果顯示如下,安裝成功:
          svnserve, version 1.4.0 (r21228)
            compiled Oct 12 2006, 10:18:56
          Copyright (C) 2000-2006 CollabNet.
          Subversion is open source software, see http://subversion.tigris.org/
          This product includes software developed by CollabNet (http://www.Collab.Net/).
          The following repository back-end (FS) modules are available:
          * fs_fs : Module for working with a plain file (FSFS) repository.
          2. svn配置
          建立版本庫(kù)目錄,可建多個(gè):
          mkdir -p /opt/svndata/repos1
          mkdir -p /opt/svndata/repos2
          建立版本庫(kù):
          svnadmin create /opt/svndata/repos1
          svnadmin create /opt/svndata/repos2
          修改版本庫(kù)配置文件:
          版本庫(kù)1:
          vi /opt/svndata/repos1/conf/svnserve.conf
          內(nèi)容修改為:
          [general]
          anon-access = none
          auth-access = write
          password-db = /opt/svn/conf/pwd.conf
          authz-db = /opt/svn/conf/authz.conf
          realm = repos1
          版本庫(kù)2:
          vi /opt/svndata/repos2/conf/svnserve.conf
          內(nèi)容修改為:
          [general]
          anon-access = none
          auth-access = write
          password-db = /opt/svn/conf/pwd.conf
          authz-db = /opt/svn/conf/authz.conf
          realm = repos2
            即除realm = repos2外,其他與版本庫(kù)1配置文件完全相同。如果有更多的版本庫(kù),依此類推。
          配置允許訪問(wèn)的用戶:
          vi /opt/svn/conf/pwd.conf
            為了簡(jiǎn)化配置,2個(gè)版本庫(kù)共用1個(gè)用戶配置文件。如有必要,也可以分開(kāi)。
          注意:對(duì)用戶配置文件的修改立即生效,不必重啟svn。
          文件格式如下:
          [users]
          <用戶1> = <密碼1>
          <用戶2> = <密碼2>
            其中,[users]是必須的。下面列出要訪問(wèn)svn的用戶,每個(gè)用戶一行。示例:
          [users]
          alan = password
          king = hello
          配置用戶訪問(wèn)權(quán)限:
          vi /opt/svn/conf/authz.conf
            為了簡(jiǎn)化配置,3個(gè)版本庫(kù)共用1個(gè)權(quán)限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分開(kāi)。文件中定義用戶組和版本庫(kù)目錄權(quán)限。
          注意:
          * 權(quán)限配置文件中出現(xiàn)的用戶名必須已在用戶配置文件中定義。
          * 對(duì)權(quán)限配置文件的修改立即生效,不必重啟svn。
          用戶組格式:
          [groups]
          <用戶組名> = <用戶1>,<用戶2>
          其中,1個(gè)用戶組可以包含1個(gè)或多個(gè)用戶,用戶間以逗號(hào)分隔。
          版本庫(kù)目錄格式:
          [<版本庫(kù)>:/項(xiàng)目/目錄](méi)
          @<用戶組名> = <權(quán)限>
          <用戶名> = <權(quán)限>
            其中,方框號(hào)內(nèi)部分可以有多種寫(xiě)法:
          /,表示根目錄及以下。根目錄是svnserve啟動(dòng)時(shí)指定的,我們指定為/opt/svndata。這樣,/就是表示對(duì)全部版本庫(kù)設(shè)置權(quán)限。
          repos1:/,表示對(duì)版本庫(kù)1設(shè)置權(quán)限
          repos2:/occi, ,表示對(duì)版本庫(kù)2中的occi項(xiàng)目設(shè)置權(quán)限
          repos2:/occi/aaa, ,表示對(duì)版本庫(kù)2中的occi項(xiàng)目的aaa目錄設(shè)置權(quán)限
            權(quán)限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權(quán)限可以是w、r、wr和空,空表示沒(méi)有任何權(quán)限。
          示例:
          [groups]
          admin = alan
          [/]
          @admin = rw
          [repos1:/occi/aaa]
          king = rw
          [repos2:/pass]
          king =
          刪除無(wú)用文件:
          rm /opt/svndata/repos1/conf/authz
          rm /opt/svndata/repos1/conf/passwd
          rm /opt/svndata/repos2/conf/authz
          rm /opt/svndata/repos2/conf/passwd
          3. 啟動(dòng)svn
          建立啟動(dòng)svn的用戶:
          useradd svn
          passwd svn
          根據(jù)提示為用戶svn設(shè)置密碼
          允許用戶svn訪問(wèn)版本庫(kù):
          chown –R svn:svn /opt/svndata
          chown –R svn:svn /opt/data
          啟動(dòng)svn:
          su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"
          其中:
          su – svn表示以用戶svn的身份啟動(dòng)svn
          -d表示以daemon方式(后臺(tái)運(yùn)行)運(yùn)行
          --listen-port 9999表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root權(quán)限
          -r /opt/svndata指定根目錄是/opt/svndata
          檢查:
          ps –ef|grep svnserve
          如果顯示如下,即為啟動(dòng)成功:
          svn    6941   1 0 15:07 ?    00:00:00 svnserve -d --listen-port 9999 -r /opt/svndata

          檢測(cè)服務(wù)是否開(kāi)啟:netstat -ntlp如果看到3690的端口正常開(kāi)放了,證明SVN啟動(dòng)了。]
          下面是機(jī)器上的端口顯示:
          Active Internet connections (only servers)
          Proto Recv-Q Send-Q Local Address         Foreign Address              State        PID/Program name
          tcp         0       0 0.0.0.0:32769         0.0.0.0:*                    LISTEN       2611/rpc.statd
          tcp         0       0 0.0.0.0:111           0.0.0.0:*                    LISTEN       2591/portmap
          tcp         0       0 0.0.0.0:113           0.0.0.0:*                    LISTEN       2827/xinetd
          tcp         0       0 127.0.0.1:631         0.0.0.0:*                    LISTEN       4860/cupsd
          tcp         0       0 127.0.0.1:25          0.0.0.0:*                    LISTEN       2846/sendmail: acce
          tcp         0       0 :::3690               :::*                        LISTEN       5513/svnserve
          tcp         0       0 :::22                 :::*                        LISTEN       2812/sshd
          下面這個(gè)就是了:
          tcp         0       0 :::3690               :::*                        LISTEN       5513/svnserve
          好了,svn已經(jīng)架起來(lái)了
          主頁(yè) | 照片 | 視頻 | 收藏
          Onion的天空
          Live In ShangHai.Mon 7 Aug 2006在 Linux/Apache 2.2 上配置SVN服務(wù)器
          By Onion under Linux   | Tag : Apache, Linux, svn, Ubuntu
          You can skip to the end and leave a response. Pinging is currently not allowed.
          準(zhǔn)備,下載所需要文件.
          檢查已安裝的 Apache2 是否已經(jīng)安裝了 mod_dav .
          編譯SVN,遇到的問(wèn)題和解決方法
          使用 默認(rèn)文件系統(tǒng)(fsfs) 保存數(shù)據(jù)
          使用 Berkeley DB 保存數(shù)據(jù)
          配置Apache和SVN,測(cè)試.
          其它小結(jié)
          從Windows平臺(tái)上數(shù)據(jù)轉(zhuǎn)移
          配置文件,使用其支持對(duì)文件中的 $Id$ 標(biāo)簽每次提交的時(shí)候自動(dòng)更新版本信息.
          基于路徑的權(quán)限控制
          常用SVN命令
          相關(guān)資源
          * 準(zhǔn)備,下載所需要文件.
          本文測(cè)試環(huán)境:
          ubuntu 6.06 LTS (kernel 2.6.15-25-k7,gcc-4.0.3) /ubuntu server (2.6.15-26-server,gcc-4.0.4)
          Subversion 1.3.2
          Apache 2.2.2
          最新的版本 Subversion 可以在這里找到 :http://subversion.tigris.org/project_packages.html
          * 檢查已安裝的 Apache2 是否已經(jīng)安裝了 mod_dav .
          如果已經(jīng)成功安裝了Apache,使用 httpd -M 來(lái)查看有沒(méi)有安裝 dav_module,如果沒(méi)有的話 必須附加 ‘–enable-dav’ ‘–enable-dav-fs’ 兩個(gè)參數(shù)重新編譯 Apache,否則即使編譯通過(guò)了svn,apache也會(huì)啟動(dòng)不起來(lái).
          如何編譯 Apache 請(qǐng)參考我另外一篇文章.
          * 編譯SVN,遇到的問(wèn)題和解決方法.
          使用默認(rèn)的文件系統(tǒng)保存數(shù)據(jù).
          最終完整通過(guò)安裝和測(cè)試的編譯參數(shù)為:
          ./configure --with-apxs=/usr/local/apache2/bin/apxs \
          --with-apr=/home/src/server/httpd-2.2.2/srclib/apr \
          --with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-util
          make
          make install
          其中 /home/src/server/ 為 httpd-2.2.2 源代碼所在文件夾,根據(jù)實(shí)際情況調(diào)整一下.
          ◆ 遇到問(wèn)題:
          1) --with-apr 和 --with-apr-util 如果沒(méi)有加上的話,即使編譯成功了也會(huì)出現(xiàn)
          Can’t set position pointer in file ‘/home/svn/repos/db/revs/0′: Invalid argument
          這樣的錯(cuò)誤提示.
          2) 暫時(shí)不能使用 Berkeley DB [* 已解決]
          svn保存文件更新數(shù)據(jù)庫(kù)的方法有兩個(gè),一種是直接使用 fs (filesystem)來(lái)保存,另一種是通過(guò)Oracle提供支持的開(kāi)源數(shù)據(jù)庫(kù) Berkeley DB 進(jìn)行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就會(huì)configure時(shí)就會(huì)報(bào)錯(cuò).
          configure: error: APR-UTIL was installed independently, it won’t be
          possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
          我想 apr-unit 暫時(shí)不支持吧,我們就用默認(rèn)的fs好了.
          3) 在make 的時(shí)候可能會(huì)遇到缺少 srclib/apr/libapr-1.la,srclib/apr-util/libaprutil-1.la 兩個(gè)文件,找不到而make error.
          解決辦法:/usr/local/apache2/lib/ 中找到,將其復(fù)制到源代碼文件夾相應(yīng)的位置中.
          Update!!
          使用 BerkeleyDB 保存數(shù)據(jù).
          1) 安裝 BerkeleyDB
          tar xzvf db-4.3.29.tar.gz
          cd /usr/local/src/db-4.3.29/build_unix
          ../dist/configure --enable-compat185
          make
          make install
          2) 更新apr和apr-util源代碼
          # 清理編譯后的.la文件
          cd /usr/local/src/httpd-2.2.3
          make clean
          cd /usr/local/src/subversion-1.3.2
          rm -rf apr
          rm -rf apr-util
          cp -rf /usr/local/src/httpd-2.2.3/srclib/apr ./
          cp -rf /usr/local/src/httpd-2.2.3/srclib/apr-util/ ./
          3) 編譯安裝
          ./configure --with-apxs=/usr/local/apache2/bin/apxs \
          --with-berkeley-db=/usr/local/BerkeleyDB.4.3 \
          --with-ssl
          make
          make install
          ◆ 遇到問(wèn)題:
          1) BerkeleyDB 版本不能大于 4.3.否則同樣會(huì)出現(xiàn)以下錯(cuò)誤.
          configure: error: APR-UTIL was installed independently, it won’t be
          possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
          主要是apr-util 暫時(shí)不支持4.4的版本.
          2) 必須更新apr,apr-util 源代碼.
          subversion-1.3.2 自帶的 apr-util 的版本是0.9.6的,必須升級(jí)為 1.2.7 雖然能編譯過(guò)去。但在 svn checkout 的時(shí)候會(huì)提示
          svn: REPORT request failed on ‘/!svn/vcc/default’
          svn: REPORT of ‘/!svn/vcc/default’: Could not read status line: connection was closed by server.
          這個(gè)問(wèn)題困擾了我很長(zhǎng)時(shí)間,Google和官方論壇都無(wú)結(jié)果。后來(lái)昨天竟然自己無(wú)意中解決了,感動(dòng)的得哭了:)
          * 配置Apache和SVN,測(cè)試
          成功編譯svn后會(huì)在 httpd.conf 中自動(dòng)加上
          LoadModule dav_svn_module modules/mod_dav_svn.so
          LoadModule authz_svn_module modules/mod_authz_svn.so
          兩個(gè)模塊,沒(méi)有的話,自行加上或檢測(cè)是否真的編譯成功.
          假設(shè)我們現(xiàn)在要將一個(gè)名為 Lair 的項(xiàng)目導(dǎo)入到 SVN中
          1). Apache的配置
          在 conf/httpd.conf 或 conf/extra/httpd-vhosts.conf 中加入
          <Location /svn/Lair>
          DAV svn
          SVNPath /home/svn/Lair
          </Location>
          可以參考以下apache的配置,實(shí)現(xiàn)數(shù)據(jù)加密傳輸,用戶身份驗(yàn)證.
          Listen 443
          AddType application/x-x509-ca-cert .crt
          AddType application/x-pkcs7-crl .crl.
          SSLPassPhraseDialog exec:/etc/sendsslpwd
          SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000)
          SSLSessionCacheTimeout 300
          SSLMutex file:/usr/local/apache2/logs/ssl_mutex
          <VirtualHost _default_:443>
          DocumentRoot /var/SVNRoot
          ServerName svn.yousite.com:443
          ServerAdmin webmaster@yousite.com
          <Location />
          DAV svn
          SVNPath /var/SVNRoot
          AuthzSVNAccessFile /etc/svnserve.conf
          Satisfy Any
          AuthType Basic
          AuthName “yousite SVN Repository”
          AuthUserFile /etc/httpd-passwords.txt
          Require valid-user
          </Location>
          SSLEngine on
          SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
          SSLCertificateFile /etc/ssl/server.crt
          SSLCertificateKeyFile /etc/ssl/server.key
          </VirtualHost>
          2). 配置,并且測(cè)試SVN,
          創(chuàng)建一個(gè)新用戶,用了保存?zhèn)}庫(kù).
          useradd -m svn
          創(chuàng)建一個(gè)新模塊
          su daemon (apache是以daemon用戶運(yùn)行的,所以要切換身份,否則可能會(huì)報(bào)目錄訪問(wèn)權(quán)限錯(cuò)誤)
          svnadmin create --fs-type fsfs /home/svn/Lair
          導(dǎo)入原來(lái)的項(xiàng)目
          svn import /var/www/Lair http://localhost/svn/Lair -m ‘Initial import’
          重新建立工作目錄
          rm -rf /var/www/Lair (注意備份!!)
          svn checkout http://localhost/svn/Lair
          測(cè)試打開(kāi) http://localhost/svn/Lair
          如能看到一個(gè)你項(xiàng)目錄列表,說(shuō)明您成功了。
          * 其它小結(jié)
          ■ 數(shù)據(jù)轉(zhuǎn)移:
          從 Windows 平臺(tái) SVN 服務(wù)器轉(zhuǎn)移
          如果windows svn儲(chǔ)存的格式也是dbd的話,直接將SVN的文件夾copy過(guò)來(lái)即可.然后
          執(zhí)行 svnadmin recover /var/SVNRoot 檢查一下數(shù)據(jù)庫(kù)是否損壞.
          最后注意權(quán)限,確保 db 目錄下的所有文件可寫(xiě)。
          chmod 755 db
          chmod 666 db/*
          否則checkout時(shí)出現(xiàn)以下錯(cuò)誤,多數(shù)是因?yàn)槲募蛘吣夸洐?quán)限問(wèn)題引起的,可以嘗試用 chown 或者 chmod 命令修改一下權(quán)限
          <m:human-readable errcode=”160029″>
          Could not open the requested SVN filesystem
          </m:human-readable>
          <m:human-readable errcode=”13″>
          Could not open the requested SVN filesystem
          </m:human-readable>
          另外一種方法沒(méi)有測(cè)試過(guò),原理大致和mysqldump一樣,將svn導(dǎo)出為文本文件,然后重新導(dǎo)入,好處是可以避免因?yàn)榇鎯?chǔ)格式不同而導(dǎo)致的數(shù)據(jù)轉(zhuǎn)移困難。
          # dump data to file (assuming a repo @ c:\repo):
          svnadmin dump c:\repo > c:\repo.txt
          # Copy the file over to linux:
          mkdir /repo
          svnadmin create /repo
          svnadmin load /repo < /repo.txt
          ■ 設(shè)置訪問(wèn)控制
          當(dāng) httpd.conf 中 設(shè)置 AuthzSVNAccessFile 時(shí),可以設(shè)置不同用戶對(duì)不同目錄的訪問(wèn)控制.以下是一個(gè)例子.
          [groups]
          root = admin.root
          web = user1,user2
          soft = user3,user4
          [/]
          @root = rw
          [/www]
          @web = rw
          [/soft]
          @soft = rw
          ■ 配置文件,使用其支持對(duì)文件中的 $Id$ 標(biāo)簽每次提交的時(shí)候自動(dòng)更新版本信息(自動(dòng)屬性).
          Windows : C:\Documents and Settings\%USERNAME%\Application Data\Subversion\config
          Linux : ~\.subversion\config
          [miscellany]
          enable-auto-props = yes
          [auto-props]
          *.php=svn:keywords=Id
          *.html=svn:keywords=Id
          >> 關(guān)于自動(dòng)屬性的更高級(jí)討論
          ■ 幾條常用svn 命令
          svn update
          svn add “filename”
          svn commit
          ———————–
          Change Log:
          2006-08-14 neon庫(kù)subversion已經(jīng)自帶,不需要在單獨(dú)安裝,添加-with-ssl即可使用svn對(duì)ssl支持.
          2006-08-10 補(bǔ)充自動(dòng)屬性的說(shuō)明.
          2006-08-08 加入關(guān)于目錄訪問(wèn)驗(yàn)證的說(shuō)明.
          2006-08-07 httpd,2.2.3測(cè)試依然有效,解決bdb數(shù)據(jù)庫(kù)的支持問(wèn)題,添加從Windows到Linux下的數(shù)據(jù)轉(zhuǎn)移方案。
          2006-07-25 看到到.聲仔對(duì) Can’t set position pointer in file 另一種解決方案,我當(dāng)時(shí)也測(cè)試了,好像沒(méi)有成功。不想用apache源代碼編譯的朋友可以也測(cè)試一下
          posted on 2007-10-16 11:13 蘆葦 閱讀(15291) 評(píng)論(2)  編輯  收藏 所屬分類: 其他

          Feedback

          # re: SVN配置 2007-10-16 11:16 蘆葦
           Windows下安裝和配置SVN Server     CSDN Blog推出文章指數(shù)概念,文章指數(shù)是對(duì)Blog文章綜合評(píng)分后推算出的,綜合評(píng)分項(xiàng)分別是該文章的點(diǎn)擊量,回復(fù)次數(shù),被網(wǎng)摘收錄數(shù)量,文章長(zhǎng)度和文章類型;滿分100,每月更新一次。
          1.     配置環(huán)境
          Windows 2003 Server with SP1
          Apache HTTP Server v2.0.55
          Subversion v1.4.2
          2.     安裝 Apache HTTP Server
          將安裝目錄修改為C:\Apache Group
          默認(rèn)是安裝到C:\Program Files\Apache Group目錄下
          安裝后的目錄結(jié)構(gòu)如下:
          C:\Apache Group\Apache2\bin\
          C:\Apache Group\Apache2\conf\
          ......
          3.     安裝 Subversion
              這里使用zip包,解壓到C盤(pán),然后將C:\svn-win32-1.4.2\bin添加環(huán)境變量PATH中。
              解壓后的目錄結(jié)構(gòu)如下:
              C:\svn-win32-1.4.2\bin\
              C:\svn-win32-1.4.2\iconv\
              ......
          l        將C:\svn-win32-1.4.2\bin目錄下的mod_dav_svn.so和mod_authz_svn.so復(fù)制到C:\Apache Group\Apache2\modules目錄下。
          l        將C:\svn-win32-1.4.2\bin目錄下的所有DLL文件復(fù)制到C:\Apache Group\Apache2\bin目錄下。注意在復(fù)制DLL文件時(shí)最好停掉Apache。
          l        用文本編輯器打開(kāi)C:\Apache Group\Apache2\conf\httpd.conf文件找到以下兩行
              #LoadModule dav_module modules/mod_dav.so
              #LoadModule dav_fs_module modules/mod_dav_fs.so
              去掉前面的#,然后所有LoadModule的后面添加下面兩行
              LoadModule dav_svn_module modules/mod_dav_svn.so
              LoadModule authz_svn_module modules/mod_authz_svn.so
              然后重起Apache
          4.     建庫(kù)
              假設(shè)所有庫(kù)的根目錄是F:\svn,并且要建一個(gè)名為testrepos的庫(kù),打開(kāi)DOS窗口,進(jìn)入到F:\svn目錄下,然后輸入svnadmin create f:\svn\testrepos
          命令執(zhí)行完后f:\svn\testrepos目錄下會(huì)生成一些目錄和文件。然后在C:\Apache Group\Apache2\conf\httpd.conf文件的最后添加下面內(nèi)容,并重起Apache
              <Location /svn>
              DAV svn
              SVNParentPath f:\svn
              </Location>
          5.     測(cè)試
          打開(kāi)DOS窗口,進(jìn)入一個(gè)臨時(shí)目錄F:\temp下
          svn co http://localhost/svn/testrepos
          正確執(zhí)行后會(huì)顯示"Checked out revision 0."的信息。
          6.     導(dǎo)入
          在一個(gè)臨時(shí)文件夾(比如C:\temp)下建立如目錄
          trunk
          branches
          tags
          在DOS命令行下進(jìn)入C:\temp目錄,然后執(zhí)行
          svn import . http://localhost/svn/testrepos -m "Initial repository"
          執(zhí)行成功的話會(huì)提示提交后的修訂版本為1。
          7.     關(guān)于庫(kù)的建立
          建議為會(huì)每一個(gè)項(xiàng)目建立一個(gè)庫(kù),例如:
          F:\svn\project1
          F:\svn\project2
          再為每個(gè)庫(kù)建立如下結(jié)構(gòu)(Subversion官方手冊(cè)建議的目錄結(jié)構(gòu))
          F:\svn\project1\trunk      這個(gè)目錄用來(lái)存放正在進(jìn)行開(kāi)發(fā)的項(xiàng)目代碼
          F:\svn\project1\branches   這個(gè)目錄用來(lái)存放正在開(kāi)發(fā)中的版本分支
          F:\svn\project1\tags       這個(gè)目錄用來(lái)存放不再變動(dòng)的分支
           

          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1495115

            回復(fù)  更多評(píng)論
            

          # re: SVN配置 2007-10-16 11:17 蘆葦
           Subversion安裝記錄     CSDN Blog推出文章指數(shù)概念,文章指數(shù)是對(duì)Blog文章綜合評(píng)分后推算出的,綜合評(píng)分項(xiàng)分別是該文章的點(diǎn)擊量,回復(fù)次數(shù),被網(wǎng)摘收錄數(shù)量,文章長(zhǎng)度和文章類型;滿分100,每月更新一次。

          程序版本:
             Subversion:1.3.2(官方下載
             SmartSVN:2.0.6(官方下載)本地下載:

          安裝過(guò)程:
           1、安裝Subversion。這個(gè)過(guò)程很簡(jiǎn)單,默認(rèn)安裝就可以了,沒(méi)什么可說(shuō)的。
           2、創(chuàng)建Repository(可以理解為代碼倉(cāng)庫(kù),其實(shí)除了放代碼,其他的也可以放的^_^):
             通過(guò)CMD進(jìn)入命令行模式,輸入下列命令,在d:\SubversionWorkspace\pub這個(gè)目錄下建立Repository:
          svnadmin create --fs-type fsfs d:\SubversionWorkspace\pub

          注:之所以選擇fsfs格式,參考下面的文檔中的相關(guān)資料
          相關(guān)文檔資料:
          $ svnadmin create --fs-type fsfs /path/to/repos
          $ svnadmin create --fs-type bdb /path/to/other/repos

          Warning
          Do not create a Berkeley DB repository on a network share—it cannot exist on a remote filesystem such as NFS, AFS, or Windows SMB. Berkeley DB requires that the underlying filesystem implement strict POSIX locking semantics, and more importantly, the ability to map files directly into process memory. Almost no network filesystems provide these features. If you attempt to use Berkeley DB on a network share, the results are unpredictable—you may see mysterious errors right away, or it may be months before you discover that your repository database is subtly corrupted.

          If you need multiple computers to access the repository, you create an FSFS repository on the network share, not a Berkeley DB repository. Or better yet, set up a real server process (such as Apache or svnserve), store the repository on a local filesystem which the server can access, and make the repository available over a network. Chapter 6, Server Configuration covers this process in detail.

           3、添加用戶并設(shè)置權(quán)限。沒(méi)有做詳細(xì)研究,請(qǐng)直接參考下面的資料:
          轉(zhuǎn)自:http://www.dlog.cn/html/di...

          獨(dú)立運(yùn)行的Subversion權(quán)限設(shè)置很簡(jiǎn)單,首先打開(kāi)snvserve.conf,去掉下面一行的注釋

          authz-db = authz

          然后打開(kāi)同一目錄下的authz這個(gè)文件,這個(gè)文件便是整個(gè)權(quán)限控制的核心,先來(lái)看一個(gè)例子:

          [groups]
          dev-group = liudong,xfliang
          design-group = newidea

          [/]
          @dev-group = rw
          @design-group = r
          * =

          [/doc]
          @design-group = rw

          [/webapp]
          @design-group = rw

          接下來(lái)我給大家解釋一下這個(gè)文件,相信就可以明白Subversion如何來(lái)做權(quán)限控制的了。

          首先我定義了兩個(gè)組,一個(gè)開(kāi)發(fā)組(dev-group),一個(gè)設(shè)計(jì)組(design-group),接下來(lái)我讓dev-group對(duì)整個(gè)目錄有讀寫(xiě)的權(quán)限,而design-group只有讀權(quán)限。但是接下來(lái)的兩個(gè)子目錄design-group就有讀寫(xiě)權(quán)限,也就是說(shuō)設(shè)計(jì)組可以讀取整個(gè)項(xiàng)目,但只能修改doc以及webapp這兩個(gè)子目錄。

          *= 這行表示其他人不能讀寫(xiě)。當(dāng)然也可以直接指定某個(gè)用戶,例如我想讓liudong這個(gè)用戶可以讀寫(xiě)webapp目錄,那設(shè)置如下:

          [/webapp]
          @design-group = rw
          liudong = rw

          另外有一點(diǎn)注意的是,修改這個(gè)文件不需要重新啟動(dòng)svn服務(wù),這點(diǎn)太棒了。

          下面是詳細(xì)的說(shuō)明Subversion自帶的authz樣例中的注釋

          ### This file is an example authorization file for svnserve.
          ### Its format is identical to that of mod_authz_svn authorization
          ### files.
          ### As shown below each section defines authorizations for the path and
          ### (optional) repository specified by the section name.
          ### The authorizations follow. An authorization line can refer to a
          ### single user, to a group of users defined in a special [groups]
          ### section, or to anyone using the '*' wildcard.  Each definition can
          ### grant read ('r') access, read-write ('rw') access, or no access
          ### ('').

           4、將Subversion注冊(cè)為系統(tǒng)。將SVNServise拷貝到Subversion的安裝目錄下的bin目錄(我這里為:C:\Program Files\Subversion\bin)。然后在CMD中轉(zhuǎn)到剛剛那個(gè)目錄,運(yùn)行下列命令:
          svnserve -d -r d:\SubversionWorkspace\

          注:以下是svnserve的命令選項(xiàng)
          svnserve [選項(xiàng)]
          有效選項(xiàng):
           -d [--daemon]            : 后臺(tái)模式
           --listen-port 參數(shù)     : 監(jiān)聽(tīng)端口(后臺(tái)模式)
           --listen-host 參數(shù)     : 監(jiān)聽(tīng)主機(jī)名或IP地址(后臺(tái)模式)
           --foreground             : 在前臺(tái)運(yùn)行(調(diào)試時(shí)有用)
           -h [--help]              : 顯示這個(gè)幫助
           --version                : 顯示版本信息
           -i [--inetd]             : inetd 模式
           -r [--root] 參數(shù)       : 服務(wù)根目錄
           -R [--read-only]         : force read only, overriding repository config file
           -t [--tunnel]            : 隧道模式
           --tunnel-user 參數(shù)     : 隧道用戶名(模式是當(dāng)前用戶UID的名字)
           -X [--listen-once]       : 監(jiān)聽(tīng)一次(調(diào)試時(shí)有用)

           5、用SmartSVN連接剛剛建好的服務(wù)器  

          下載文件 (已下載 22 次)

             SVNServise:將Subversion注冊(cè)為系統(tǒng)服務(wù)的東東。本地下載:
          下載文件 (已下載 19 次)

             TortoiseSVN:1.4.0 RC1(官方下載
          安裝環(huán)境:
             Windows XP-SP2-en


          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1495108

            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 游戏| 麻栗坡县| 九台市| 宣恩县| 将乐县| 杭锦旗| 谢通门县| 绥中县| 达州市| 武城县| 峨眉山市| 沛县| 招远市| 南召县| 平武县| 仁怀市| 郁南县| 雷山县| 十堰市| 云梦县| 安达市| 奇台县| 丹棱县| 麻城市| 外汇| 两当县| 宁远县| 项城市| 呼玛县| 富平县| 九江县| 施甸县| 伊金霍洛旗| 淅川县| 兴义市| 元氏县| 嘉善县| 祁东县| 蓝田县| 游戏| 朝阳县|