linux搭建svn服務器
參考:http://www.cnblogs.com/chaichuan/p/3758173.html
Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理隨着時間改變的數據。 這些數據放置在一箇中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變更。 這樣你就能夠把檔案恢復到舊的版本, 或是瀏覽文件的變更歷史。html
SVN中的一些概念
(1). repository(源代碼庫)
源代碼統一存放的地方
(2). Checkout (提取)
下載代碼,客戶端經過checkout從服務器(Subversion)端下載源代碼
(3). Commit (提交)
從服務器下載的代碼,若是作了變動則須要提交到服務器端
(4). Update (更新)
本地已經checkout了一份代碼,若是別人對代碼作了更改而且已經提交,那麼update能夠更新別人更改後的代碼,通常在提交代碼前都須要更新一下代碼,防止本身的代碼覆蓋了別人更改了的代碼
SVN管理源代碼是以行爲單位的,若是兩個程序員修改的不是同一行代碼,SVN都會自動合併兩種修改。若是是同一行,SVN會提示文件Confict, 衝突,若是發生衝突則須要手動的解決衝突,切不可直接提交。
windows經常使用的客戶端軟件:TortoiseSVN
SVN 服務器搭建(centeros linux)linux
yum install -y subversion
或者程序員
yum -y install svn
驗證是否安裝成功apache
svnserve --version
建立SVN 版本庫windows
mkdir svn svnadmin create svn/rep01
rep01爲版本庫的名稱,rep01的結構以下 bash
$ ls svn/rep01/ conf db format hooks locks README.txt
svn配置文件服務器
$ ls svn/rep01/conf/ authz passwd svnserve.conf
(1)svnserve.conf: svn服務配置文件下。
(2)passwd: 用戶名口令文件。
(3)authz: 權限配置文件。
svnserve.conf 文件, 該文件配置項分爲如下5項:
anon-access: 控制非鑑權用戶訪問版本庫的權限。
auth-access: 控制鑑權用戶訪問版本庫的權限。
password-db: 指定用戶名口令文件名。取消註釋使用默認文件,也就是conf同級的那個passwd文件,取消註釋前面不能有任何空格,否則會報錯
authz-db:指定權限配置文件名,經過該文件能夠實現以路徑爲基礎的訪問控制。取消註釋使用默認文件,也就是conf同級的那個authz文件,取消註釋前面不能有任何空格,否則會報錯
realm:指定版本庫的認證域,即在登陸時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件
當指定 password-db 和 authz-db 時鏈接svn才提示輸入密碼
passwd文件svn
[users] # harry = harryssecret # sally = sallyssecret username = password
#表明註釋
authz文件測試
[aliases] #在這個組下面定義別名 # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] #定義組的概念,好比harry,sally是一組 # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] #指定配置庫 # harry = rw # 用戶harry有讀寫權限 # &joe = r # &joe表明別名joe # * = # [repository:/baz/fuz] #指定配置庫 repository配置庫名稱 /baz/fuz配置庫repository下的路徑 # @harry_and_sally = rw # @harry_and_sally表明組harry_and_sally # * = r # *通配符,表明全部人 $anonymous 匿名用戶 $authenticated非匿名用戶
啓動和中止SVN服務
啓動SVN服務:ui
svnserve -d -r svn/rep01
-d表示後臺運行
-r 指定配置庫路徑
命令行測試
mkdir test cd test svn co svn://localhost/rep01
中止SVN服務:
ps -aux | grep svn kill -9 進程殺掉
或者
killall svnserve
注意以下配置
[/] * = rw [rep01:/] test = rw
則啓動配置庫的時候須要svnserve -d -r svn,否則會找不到配置庫rep01
客戶端鏈接SVN 服務器
地址:svn://ip/repository 如:svn://192.168.19.100/rep01
參考:http://www.cnblogs.com/ayanmw/archive/2011/12/19/2294054.html
安裝apache相關組件
yum -y install mod_dav_svn httpd
在/etc/httpd/conf.d/目錄下會存在文件subversion.conf,其配置內容以下
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # # Example configuration to enable HTTP access for a directory # containing Subversion repositories, "/var/www/svn". Each repository # must be both: # # a) readable and writable by the 'apache' user, and # # b) labelled with the 'httpd_sys_content_t' context if using # SELinux # # # To create a new repository "http://localhost/repos/stuff" using # this configuration, run as root: # # # cd /var/www/svn # # svnadmin create stuff # # chown -R apache.apache stuff # # chcon -R -t httpd_sys_content_t stuff # #<Location /repos> # DAV svn # SVNParentPath /var/www/svn # # # Limit write permission to list of valid users. # <LimitExcept GET PROPFIND OPTIONS REPORT> # # Require SSL connection for password protection. # # SSLRequireSSL # # AuthType Basic # AuthName "Authorization Realm" # AuthUserFile /path/to/passwdfile # Require valid-user # </LimitExcept> #</Location>
<Location /repos>:/repos爲虛擬目錄,對應SVNParentPath指定的實際目錄
AuthUserFile:指定用戶名密碼文件,該文件使用htpasswd命令建立
SVNParentPath:指定了SVN配置庫的父目錄
AuthUserFile 用戶添加
htpasswd -h查看命令幫助
第一次添加用戶
htpasswd -c passwd test
passwd:文件的名稱
test:用戶名
再次添加用戶
htpasswd passwd test
啓動apache服務
sudo service httpd restart
注意修改配置庫目錄的權限,否則會一直報權限問題的
chown -R apache:apache rep01 chcon -R -t httpd_sys_content_t rep01
此刻就可使用http://localhost/repos/stuff repos爲映射的虛擬路徑,stuff爲配置庫