- 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访问。从现在开始,他们可以对仓库执行所有受支持的操作。