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

阿帕奇设置

我们已经看到了如何在 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 项目都直接在项目的根目录下主干、标签分支目录。

干线是所有主要的发展情况,通常是签出由开发商来工作,对项目的目录。

标签目录用于该项目的商店命名的快照。创建生产版本时,团队将标记进入该版本的代码。

分支当你想追求发展的不同线路目录中。

让我们在项目存储库下创建主干、标签和分支目录结构。

[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 and Jerry从现在开始,他们可以对存储库执行所有支持的操作。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁