Subversion 是一個(gè)受歡迎的開源的版本控制工具。他在互聯(lián)網(wǎng)免費(fèi)提供并且開源。大多數(shù) GNU/Linux 發(fā)行版系統(tǒng)自帶,所以它很有可能已經(jīng)安裝在你的系統(tǒng)上了??梢允褂孟旅婷顧z查是否安裝了。
[jerry@CentOS ~]$ svn --version
如果 Subversion 客戶端沒有安裝,命令將報(bào)告錯(cuò)誤,否則它將出現(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
我們已經(jīng)看到如何將 SVN 客戶端安裝到 GNU/Linux 上,讓我們看看如何創(chuàng)建一個(gè)新的版本庫讓使用者們?cè)L問。
我們必須必須在服務(wù)器上安裝 Apache httpd 模塊和 svnadmin 工具。subversion 從 /etc/httpd/conf.d/subversion.conf
讀取配置文件, subversion.conf 看起來像這個(gè)樣子
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)他們?cè)L問版本庫,htpasswd
命令用于創(chuàng)建和更新用來保存用戶名和密碼的純文本文件給 HTTP 用戶提供基本身份認(rèn)證。-c
選項(xiàng)創(chuàng)建一個(gè)密碼文件,如果密碼文件已經(jīng)存在了,它將會(huì)被覆蓋。這就是為什么 -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)建一個(gè) Subversion 父目錄保存所有的工作,(/etc/httpd/conf.d/subversion.conf
)。
[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/
創(chuàng)建一個(gè)名為 project_repo 的版本庫。svnadmin
命令用于創(chuàng)建一個(gè)新的版本庫和一些其他目錄保存數(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
照慣例,每個(gè) SVN 項(xiàng)目都有主干,標(biāo)簽,分支在項(xiàng)目的 root 目錄。
主干是主要開發(fā)和經(jīng)常被開發(fā)者們查看的目錄。
分支目錄用于追求不同的開發(fā)方向。
讓我們?cè)陧?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)在開始他們可以所有版本庫支持的操作了。
更多建議: