- SVN 教程
- SVN - 首頁
- SVN - 基本概念
- SVN - 環境設定
- SVN - 生命週期
- SVN - 檢出流程
- SVN - 執行更改
- SVN - 審查更改
- SVN - 更新流程
- SVN - 修復錯誤
- SVN - 解決衝突
- SVN - 標籤
- SVN - 分支
- SVN 有用資源
- SVN - 快速指南
- SVN - 有用資源
- SVN - 討論
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、tags和branches目錄。
trunk是所有主要開發發生的地方,開發人員通常會檢出它來處理專案。
tags目錄用於儲存專案的命名快照。建立生產版本時,團隊將標記進入版本的程式碼。
branches目錄用於您想要追求不同開發方向時。
讓我們在專案倉庫下建立trunk、tags和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訪問。從現在開始,他們可以對倉庫執行所有受支援的操作。