网站搜索

设置 Apache Subversion SVN 和 TortoiseSVN 进行版本控制的终极指南


如果您的工作需要处理定期更新的文档、网页和其他类型的文件,那么您可能需要使用版本控制机制(如果您还没有这样做的话)。

除此之外,这允许您(以及一组潜在的合作者)跟踪对给定文件所做的更改,并允许您在遇到问题或更新未产生预期结果时回滚到以前的版本。

在自由软件生态系统中,使用最广泛的版本控制系统称为Apache Subversion(或简称SVN)。借助 mod_dav_svn(Apache 的 Subversion 模块),您可以使用 HTTP 和 Web 服务器访问 Subversion 存储库。

也就是说,让我们卷起袖子,在 RHEL/CentOS 7Fedora 22-24Debian 8/7Ubuntu 16.04-15.04 服务器。对于我们的测试,我们将使用 IP 192.168.0.100CentOS 7 服务器。

在客户端(Windows 7 计算机),我们将安装并使用 TortoiseSVN(基于 Apache Subversion)作为 SVN 的接口。

我们的测试环境


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

步骤 1 – 在 Linux 上安装和配置 SVN

正如我们刚才提到的,我们将依赖 Apache 来使用 Web 界面访问 SVN 存储库。如果尚未安装,请确保将其添加到软件包列表中,如下所示:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

CentOS 7 上安装期间,SVN 的 Apache 配置文件将创建为 /etc/httpd/conf.modules.d/10-subversion.conf。打开文件并添加以下配置块:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

注意:在 Debian/Ubuntu 上,您需要将以下行添加到 /etc/apache2/mods-enabled/dav_svn.conf 文件。


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Debian/Ubuntu上,您需要启用dav_svn Apache模块:


a2enmod dav_svn

一些澄清:

  1. SVNParentPath 指令指示稍后将创建我们的存储库的目录。如果此目录不存在(最有可能是这种情况),请使用以下命令创建它:

    
    mkdir -p /websrv/svn
    

    请务必注意,此目录不得位于当前由 Apache 提供服务的虚拟主机的 DocumentRoot 内部或与其重叠。 这是一场精彩的比赛!

  2. AuthUserFile 指令指示将存储有效用户凭据的文件。如果您希望允许每个人无需身份验证即可访问 SVN,请删除位置块中的最后四行。如果是这种情况,请跳过第 2 步并直接前往第 3 步
  3. 尽管您可能想重新启动 Apache 以应用这些最近的更改,但请不要这样做,因为我们仍然需要使用 SVN 的有效用户以及存储库本身创建身份验证文件。

步骤 2 – 添加允许访问 SVN 的用户

现在,我们将使用 htpasswd 为允许访问 SVN 的帐户创建密码。仅对于第一个用户,我们需要 -c 选项。

允许的帐户和 bcrypt 加密的密码 (-B) 将以键值对的形式存储在 /etc/httpd/subversion-auth 中。请注意,按照当今的标准,htpasswd 使用的默认 MD5 或 SHA 加密被认为是不安全的。


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

不要忘记为身份验证文件设置正确的所有权和权限:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

步骤 3 – 添加安全性并创建 SVN 存储库

由于您将通过 Web 界面访问 SVN,因此您需要允许 HTTP(以及可选的 HTTPS)流量通过防火墙。


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

通过使用 --reload 重新加载防火墙配置,永久设置将立即生效。

创建一个名为 howtoing 的初始 SVN 存储库:


svnadmin create /websrv/svn/tecmint

递归地将所有者和组所有者更改为 apache


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

最后,您需要更改 /websrv/svn/howtoing 的安全上下文(请注意,如果您决定稍后创建其他存储库,则必须重复此步骤):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

注意:如果您在禁用 SELinux 的 VPS 上安装 SVN,则最后两个命令可能不适用。

建议阅读:了解如何在 Linux 中临时或永久禁用 SELinux

重新启动 Apache 并验证存储库是否可用。


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

然后启动网络浏览器并将其指向http://192.168.0.100/svn/howtoing。输入我们在第 1 步中创建的有效用户的凭据后,输出应类似于:

此时我们还没有向我们的存储库添加任何代码。但我们很快就会做到这一点。

步骤 4 – 在 Windows 7 客户端中安装 TortoiseSVN

正如我们在简介中提到的,TortoiseSVN 是 Apache Subversion 的用户友好界面。它是根据 GPL 许可的免费软件,可以从 https://tortoisesvn.net/downloads.html 下载。

选择与您的计算机相对应的体系结构(3264 位)并安装程序,然后再继续。

步骤 5 – 在客户端计算机上设置 SVN 存储库

在此步骤中,我们将在 Documents 中使用名为 webapp 的文件夹。该文件夹包含一个 HTML 文件,以及两个名为 script 和 styles 的文件夹,其中包含我们想要的 Javascript 和 CSS 文件(分别为 script.jsstyles.css)添加到版本控制。

右键单击webapp并选择SVN Checkout。这将创建远程存储库的本地副本(目前为空)并初始化用于版本控制的文件夹:

在存储库的 URL 中,输入 http://192.168.0.100/svn/howtoing 并确保本地签出目录保持不变,然后单击确定

输入用户名和密码(参考步骤2)并点击确定

系统将询问您是否要检出到非空目录。 确认以继续结账。完成后,文件夹名称旁边将出现一个绿色复选标记:

步骤 6 – 提交更改并将文件部署到远程 SVN 存储库

再次右键单击 webapp 并选择提交。接下来,编写描述性注释以便稍后识别此提交,并检查要部署到存储库的文件和文件夹。最后,点击确定

根据文件的大小,提交时间不应超过一分钟。完成后,您将看到我们现在处于修订版 1,它与网络界面中列出的版本和文件相匹配:

如果有多人处理相同的文件,您需要更新您的本地副本,以便可以使用最新版本。您可以通过右键单击 webapp 并从上下文菜单中选择更新来完成此操作。

恭喜!您已经成功设置了 SVN 服务器并在版本控制下提交/更新了一个简单的项目。

概括

在本文中,我们解释了如何在 CentOS 7 服务器上安装和配置 Apache Subversion 存储库服务器,以及如何使用 TortoiseSVN 提交对该存储库的更改。

请注意,SVNTortoiseSVN 的内容远远超出我们在此所能充分介绍的内容(特别是如何返回到以前的版本),因此您可能需要参考官方文档文档(SVN 和 TortoiseSVN)了解更多信息和配置案例。

一如既往,如果您有任何疑问,请随时告诉我们!请随时使用下面的评论表与我们联系。