鍍金池/ 教程/ Java/ SVN 環(huán)境搭建
SVN 檢查更改
SVN 更新過程
SVN 修復(fù)錯誤
什么是版本控制系統(tǒng)(VCS)
SVN 檢出過程
SVN 執(zhí)行修改
SVN 標(biāo)簽
SVN 分支
SVN 生命周期
SVN 環(huán)境搭建
SVN 解決沖突

SVN 環(huán)境搭建

Subversion 是一個受歡迎的開源的版本控制工具。他在互聯(lián)網(wǎng)免費(fèi)提供并且開源。大多數(shù) GNU/Linux 發(fā)行版系統(tǒng)自帶,所以它很有可能已經(jīng)安裝在你的系統(tǒng)上了??梢允褂孟旅婷顧z查是否安裝了。

[jerry@CentOS ~]$ svn --version

如果 Subversion 客戶端沒有安裝,命令將報(bào)告錯誤,否則它將出現(xiàn)安裝的軟件版本

[jerry@CentOS ~]$ svn --version  
-bash: svn: command not found

如果你使用基于 RPM 的 GNU/Linux,可以使用 yum 命令進(jìn)行安裝,安裝成功之后,執(zhí)行 svn --version 命令。

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install subversion

[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

如果你使用基于 Debian 的 GNU/Linux,使用 apt 命令進(jìn)行安裝。

[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:

[jerry@Ubuntu]$ sudo apt-get install subversion

[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

Apache 安裝

我們已經(jīng)看到如何將 SVN 客戶端安裝到 GNU/Linux 上,讓我們看看如何創(chuàng)建一個新的版本庫讓使用者們訪問。

我們必須必須在服務(wù)器上安裝 Apache httpd 模塊和 svnadmin 工具。subversion 從 /etc/httpd/conf.d/subversion.conf 讀取配置文件, subversion.conf 看起來像這個樣子

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

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

讓我們創(chuàng)建 Subversion 用戶,授權(quán)他們訪問版本庫,htpasswd 命令用于創(chuàng)建和更新用來保存用戶名和密碼的純文本文件給 HTTP 用戶提供基本身份認(rèn)證。-c 選項(xiàng)創(chuàng)建一個密碼文件,如果密碼文件已經(jīng)存在了,它將會被覆蓋。這就是為什么 -c 只在第一次使用。-m 選項(xiàng)用于設(shè)置是否啟用 MD5 加密密碼。

用戶安裝

讓我們創(chuàng)建 tom

[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

讓我們創(chuàng)建 jerry

[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@CentOS ~]# 

創(chuàng)建一個 Subversion 父目錄保存所有的工作,(/etc/httpd/conf.d/subversion.conf)。

[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/

版本庫安裝

創(chuàng)建一個名為 project_repo 的版本庫。svnadmin 命令用于創(chuàng)建一個新的版本庫和一些其他目錄保存數(shù)據(jù)。

[root@CentOS svn]# svnadmin create project_repo

[root@CentOS svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

讓我們更改版本庫的用戶和組所有權(quán)。

[root@CentOS svn]# chown -R apache.apache project_repo/

檢查是否啟用SELinux或沒有使用SELinux狀態(tài)工具

[root@CentOS svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

如果SELinux啟用了,我們必須更改安全的上下文。

[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

如果允許通過 HTTP 進(jìn)行提交,執(zhí)行下面命令。

[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

更改這些配置后,我們重啟 Apache 服務(wù)器。

[root@CentOS svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS svn]# service httpd status
httpd (pid  1372) is running...
[root@CentOS svn]#

我們已經(jīng)成功配置好了 Apache 服務(wù)器,現(xiàn)在我們將配置版本庫,使用默認(rèn)的授權(quán)文件給可信的用戶訪問,添加下列幾行到 roject_repo/conf/svnserve.conf 文件。

anon-access = none
authz-db = authz

照慣例,每個 SVN 項(xiàng)目都有主干,標(biāo)簽,分支在項(xiàng)目的 root 目錄。

主干是主要開發(fā)和經(jīng)常被開發(fā)者們查看的目錄。

分支目錄用于追求不同的開發(fā)方向。

讓我們在項(xiàng)目版本庫底下創(chuàng)建主干,標(biāo)簽,分支結(jié)構(gòu)。

[root@CentOS svn]# mkdir /tmp/svn-template
[root@CentOS svn]# mkdir /tmp/svn-template/trunk
[root@CentOS svn]# mkdir /tmp/svn-template/branches
[root@CentOS svn]# mkdir /tmp/svn-template/tags

現(xiàn)在從 /tmp/svn-template 導(dǎo)入這些文件目錄。

[root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[root@CentOS svn]#

完成了!我們已經(jīng)成功創(chuàng)建版本庫并允許 Tom 和 Jerry 訪問,從現(xiàn)在開始他們可以所有版本庫支持的操作了。