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

讓我們創建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***。從現在開始,他們可以執行所有支持的操作到版本庫。