📅  最后修改于: 2020-10-31 14:14:59             🧑  作者: Mango
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软件包允许通过Apache httpd服务器使用HTTP访问存储库,并且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
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/svn-users
Require valid-user
让我们创建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项目的主目录,标签和分支目录都直接位于该项目的根目录下。
主干是所有主要开发发生的目录,通常由开发人员签出以进行项目工作。
标签目录用于存储项目的命名快照。在创建生产版本时,团队将标记发布版本中的代码。
当您想要进行不同的开发时,将使用branchs目录。
让我们在项目存储库下创建主干,标签和分支目录结构。
[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 。从现在开始,他们可以对存储库执行所有受支持的操作。