SVN安裝(Linux)


SVN安裝

Subversion是流行的開放原始碼的版本控制工具。 因為它是開放原始碼,它是一個網際網路上免費提供。預設情況下,大多數的GNU/Linux發行,所以它可能是你的系統上已經安裝了。要檢查它是否安裝或不使用下面的命令。

[jerry@CentOS ~]$ svn --version

如果沒有安裝Subversion用戶端,然後命令將報告錯誤,否則它會顯示安裝的軟體版本。

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

如果使用的是GNU/Linux基於RPM,然後使用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 包允許使用HTTP存取到儲存庫,從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>

讓我們建立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, tags 和 branches 目錄專案的根目錄下。

樹幹(trunk )是一個目錄,在所有主要的發展發生,通常是簽出開發人員工作的專案。

標籤目錄是用來儲存的專案命名的快照。當建立一個產能釋放,團隊將標記的程式碼,進入釋放。

當想要追求發展的不同線路的分支目錄。

讓我們建立的樹幹(branches),標籤和分支的目錄結構,根據專案資料庫。

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

完成! 我們已經建立成功,並允許存取Tom Jerry。從現在開始,他們可以執行所有支援的操作到版本庫。