开发学院,分享开发教程和最新动态

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包允许使用http方式访问存储库,通过Apache httpd服务器和subversion软件包安装svnadmin工具。

subversion从/etc/httpd/conf.d /subversion.conf .conf文件中读取配置。在添加配置后,subversion.conf . 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/

Repository配置

  创建一个名为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(主干)、tag(标记)和branches(分支)目录。

  trunk(主干)是一个所有主要开发的目录,通常由开发人员签出,以在项目上工作。

  tag(标记)目录用于存储项目的命名快照。在创建生产版本时,团队将标记到发布中的代码。

  当您想要追求不同的开发线时,使用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。从现在起,他们可以对存储库执行所有支持的操作。