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
我们已经了解了如何在GNU/Linux上安装Subversion客户端.让我们看看如何创建一个新的存储库并允许访问用户.
在服务器上我们必须安装 Apache httpd 模块和 svnadmin 工具.
[jerry@CentOS ~]$ su - Password: [root@CentOS ~]# yum install mod_dav_svn subversion
mod_dav_svn package允许使用HTTP,通过Apache httpd服务器和 subversion 包安装svnadmin工具访问存储库.
颠覆从 /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 是一个所有主要开发目录发生并且通常由开发人员检查以处理项目.
标签目录用于存储项目的命名快照.在创建生产版本时,团队将标记进入版本的代码.
当您想要追求不同的开发线时,使用 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 .从现在起,他们可以对存储库执行所有支持的操作.