SVN - 環境設定



SVN 安裝

Subversion是一個流行的開源版本控制工具。它是開源的,可以在網際網路上免費獲得。大多數GNU/Linux發行版預設都包含它,因此它可能已經安裝在您的系統上。要檢查它是否已安裝,請使用以下命令。

[jerry@CentOS ~]$ svn --version

如果Subversion客戶端未安裝,則命令將報告錯誤,否則將顯示已安裝軟體的版本。

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

如果您使用的是基於RPM的GNU/Linux,則使用yum命令進行安裝。安裝成功後,執行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命令進行安裝。

[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 設定

我們已經看到了如何在GNU/Linux上安裝Subversion客戶端。讓我們看看如何建立一個新的倉庫並允許使用者訪問。

在伺服器上,我們必須安裝Apache httpd模組和svnadmin工具。

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

mod_dav_svn包允許透過Apache httpd伺服器使用HTTP訪問倉庫,而subversion包安裝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>

讓我們建立Subversion使用者並授予他們對倉庫的訪問許可權。htpasswd命令用於建立和更新純文字檔案,這些檔案用於儲存用於HTTP使用者的基本身份驗證的使用者名稱密碼。'-c'選項建立密碼檔案,如果密碼檔案已存在,則會將其覆蓋。這就是為什麼只在第一次使用'-c'選項的原因。'-m'選項啟用MD5密碼加密。

使用者設定

讓我們建立使用者tom

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

讓我們建立使用者jerry

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

建立Subversion父目錄以儲存所有工作(參見/etc/httpd/conf.d/subversion.conf)。

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

倉庫設定

建立一個名為project_repo的專案倉庫。svnadmin命令將建立一個新的倉庫和一些其他目錄來儲存元資料。

[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

讓我們更改倉庫的使用者和組所有權。

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

使用SELinux狀態工具檢查SELinux是否已啟用。

[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已啟用,因此我們必須更改SELinux安全上下文。

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

要允許透過HTTP提交,請執行以下命令。

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

重啟Apache伺服器,Apache伺服器的配置就完成了。

[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]#

我們已經成功配置了Apache伺服器,現在我們將配置倉庫。為了只向經過身份驗證的使用者提供倉庫訪問許可權並使用預設授權檔案;將以下幾行新增到project_repo/conf/svnserve.conf檔案。

anon-access = none
authz-db = authz

按照慣例,每個Subversion專案在其專案根目錄下直接包含trunk、tagsbranches目錄。

trunk是所有主要開發發生的地方,開發人員通常會檢出它來處理專案。

tags目錄用於儲存專案的命名快照。建立生產版本時,團隊將標記進入版本的程式碼。

branches目錄用於您想要追求不同開發方向時。

讓我們在專案倉庫下建立trunk、tagsbranches目錄結構。

[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

現在將/tmp/svn-template中的目錄匯入到倉庫。

[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]#

完成了!我們已經成功建立了倉庫並允許TomJerry訪問。從現在開始,他們可以對倉庫執行所有受支援的操作。

廣告
© . All rights reserved.