设置 Apache Subversion SVN 和 TortoiseSVN 进行版本控制的终极指南
如果您的工作需要处理定期更新的文档、网页和其他类型的文件,那么您可能需要使用版本控制机制(如果您还没有这样做的话)。
除此之外,这允许您(以及一组潜在的合作者)跟踪对给定文件所做的更改,并允许您在遇到问题或更新未产生预期结果时回滚到以前的版本。
在自由软件生态系统中,使用最广泛的版本控制系统称为Apache Subversion(或简称SVN)。借助 mod_dav_svn(Apache 的 Subversion 模块),您可以使用 HTTP 和 Web 服务器访问 Subversion 存储库。
也就是说,让我们卷起袖子,在 RHEL/CentOS 7、Fedora 22-24、Debian 8/7 和Ubuntu 16.04-15.04 服务器。对于我们的测试,我们将使用 IP 192.168.0.100 的 CentOS 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
一些澄清:
SVNParentPath 指令指示稍后将创建我们的存储库的目录。如果此目录不存在(最有可能是这种情况),请使用以下命令创建它:
mkdir -p /websrv/svn
请务必注意,此目录不得位于当前由 Apache 提供服务的虚拟主机的 DocumentRoot 内部或与其重叠。 这是一场精彩的比赛!
- AuthUserFile 指令指示将存储有效用户凭据的文件。如果您希望允许每个人无需身份验证即可访问 SVN,请删除位置块中的最后四行。如果是这种情况,请跳过第 2 步并直接前往第 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 下载。
选择与您的计算机相对应的体系结构(32 或 64 位)并安装程序,然后再继续。
步骤 5 – 在客户端计算机上设置 SVN 存储库
在此步骤中,我们将在 Documents 中使用名为 webapp
的文件夹。该文件夹包含一个 HTML 文件,以及两个名为 script 和 styles 的文件夹,其中包含我们想要的 Javascript 和 CSS 文件(分别为 script.js 和 styles.css)添加到版本控制。
右键单击webapp并选择SVN Checkout。这将创建远程存储库的本地副本(目前为空)并初始化用于版本控制的文件夹:
在存储库的 URL 中,输入 http://192.168.0.100/svn/howtoing
并确保本地签出目录保持不变,然后单击确定:
输入用户名和密码(参考步骤2)并点击确定:
系统将询问您是否要检出到非空目录。 确认以继续结账。完成后,文件夹名称旁边将出现一个绿色复选标记:
步骤 6 – 提交更改并将文件部署到远程 SVN 存储库
再次右键单击 webapp
并选择提交。接下来,编写描述性注释以便稍后识别此提交,并检查要部署到存储库的文件和文件夹。最后,点击确定:
根据文件的大小,提交时间不应超过一分钟。完成后,您将看到我们现在处于修订版 1,它与网络界面中列出的版本和文件相匹配:
如果有多人处理相同的文件,您需要更新您的本地副本,以便可以使用最新版本。您可以通过右键单击 webapp
并从上下文菜单中选择更新来完成此操作。
恭喜!您已经成功设置了 SVN 服务器并在版本控制下提交/更新了一个简单的项目。
概括
在本文中,我们解释了如何在 CentOS 7 服务器上安装和配置 Apache Subversion 存储库服务器,以及如何使用 TortoiseSVN 提交对该存储库的更改。
请注意,SVN 和 TortoiseSVN 的内容远远超出我们在此所能充分介绍的内容(特别是如何返回到以前的版本),因此您可能需要参考官方文档文档(SVN 和 TortoiseSVN)了解更多信息和配置案例。
一如既往,如果您有任何疑问,请随时告诉我们!请随时使用下面的评论表与我们联系。