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
我們已經看到了如何在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。從現在開始,他們可以執行所有支援的操作到版本庫。