11

在 Linux 服务器上使用 Subversion 版本控制系统

 2 years ago
source link: https://www.51cto.com/article/718662.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
574fa6288f1ce9f9323650dcd6137d102eefae.jpg

Subversion 是一个开源版本跟踪系统。它将文件保存在中央存储库中,并提供对目录或文件的版本控制。作为开发人员,您可以从存储库中提取项目文件,对其进行更改,然后再次将其推回。

Subversion 还有一个服务器组件,您可以使用它来托管您的项目。它的工作原理很像普通的文件服务器。

如何安装 Subversion

Subversion 易于安装。您可以使用适当的命令为您的发行版开始:

# Debian, Ubuntu 
sudo apt install subversion apache2 libapache2-mod-svn
c4af3eb39592b038bfe458ac0ce5fc1f413695.png
# CentOS, Fedora, RHEL
sudo dnf install subversion httpd mod_dav_svn
64f67ca3872009589a29391a61a4d96b781c63.png

请注意,此命令还会安装 Apache2 Web 服务器。如果您想通过 HTTP 或 WebDAV 访问 Subversion 存储库,您将需要一个 Web 服务器。您也可以使用 HTTPS,您只需要安装和配置数字证书即可。

运行此命令后,您可以检查是否正确安装了 subversion。您现在应该能够运行svn命令,并且可以使用–version选项查看当前版本:

b4ed8cc86194c549d6b747614b4f82b01fbfc6.png

使用 Subversion 配置服务器

如果安装顺利,您现在可以开始处理将与svn一起使用的存储库配置。当然,您需要为此创建一个新的存储库。首先,在根目录中创建一个文件夹来放置您的存储库:

sudo mkdir /subversion

如果您需要通过 HTTP 使用 WebDAV 访问您的存储库,您需要授予 Apache 对其目录的所有权。

sudo chown linuxmi:linuxmi /subversion

您现在可以切换到linuxmi用户并开始处理您的存储库。以www-data用户身份登录的命令是:

sudo su -s /bin/bash linuxmi

您现在是 Apache 用户,在此步骤之后,您可以创建您的 Subversion 存储库,如下所示:

svnadmin create /subversion/myrepo
24a9e94909e8091ddef5814ef820ff057e78a4.png

您现在有一个 Subversion 存储库。为了使这个存储库更加安全并识别其用户,下一步是创建一个用户并为其设置密码。为此,请使用以下命令:

htpasswd -cmb /subversion/passwd myadmin mypass

根据此命令,您的用户名将是myadmin,您的密码将是mypass。您可以将这些值更改为适合您情况的任何值。

您的 Subversion 存储库现在可以使用了。在这个阶段,您可以使用exit命令退出www-data用户。

124650a062db350d417044f65c7588c198117f.png
f7088d30779bef36d8241955665656f8749dc1.png

现在您可以使用以下命令将所需的项目或文件发送到您的存储库:

sudo svn import /home/linuxmi/linuxmi/ file:///subversion/myrepo -m "First Commit"

此命令使用import参数将项目文件夹中的所有内容推送到 Subversion 存储库。执行此操作时,您需要使用-m参数添加提交消息。

72793941475644b62d3129d95d97eea161fba7.png
658be33492113bd93d91352774524f81d91d8d.png

在 Subversion 中使用访问方法

您可能已经注意到您正在使用file://协议将项目添加到您的存储库。这只是您可以用来访问 svn 存储库的几种网络协议之一。您还可以通过 HTTP 或 HTTPS 使用 WebDAV 协议,或 subversion 的自定义svn协议。

直接访问存储库

如您所见,您可以使用file://协议访问本地存储库。以下是如何将本地存储库签出到当前目录:

svn co file:///subversion/myrepo

当您签出 repo 时,svn 会显示它包含的文件列表:

616cd250732a608974a715f39c20b04c57cc24.png
f537e6b06a372b149b062721b15708f9c815d5.png

使用 WebDAV 访问

要将 Subversion 存储库与 Apache 集成,您需要配置一些设置。

第一步,使用以下命令激活dav、dav_svn和dav_fs模块:

sudo a2enmod dav dav_fs dav_svn
a80a2496139d8c3bded0742e33fa08c0536ad8.png

激活所需模块后,您现在可以编辑/etc/apache2/mods-enabled/dav_svn.conf文件。如果该文件尚不存在,则创建该文件,并按如下方式更改其内容:

<Location /subversion>
  DAV svn
  SVNPath /subversion/myrepo
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /subversion/passwd
  Require valid-user
</Location>
789a89264bdcd6697749539137fe2ce113979a.png

AuthUserFile设置引用您之前使用htpasswd创建的文件。在此处添加它将授予文件中命名的所有用户存储库访问权限,前提是他们使用有效密码进行身份验证。

创建并保存此文件后,使用以下命令重新启动 Apache2 服务:

sudo systemctl restart apache2.service
91365eb6622b5d71f2d605bbb047209c3ee1a2.png

现在,当您打开 Web 浏览器并转到http://localhost/subversion/时,您将看到存储库的内容。当您访问此地址时,它会询问您的用户名和密码:

c76c14232d1197b5eaa592804aa6df65e2400a.png

使用您之前设置的用户名(例如myadmin)和密码(mypass)登录。输入用户名和密码后,您可以使用 WebDAV 访问您的 Subversion 存储库:

7658c0155d423b057723187591571cc828abeb.png

使用 SSL 和 WebDAV 访问

https://协议与http://协议的配置几乎相同,只有一些重要的区别。举个例子,你在配置过程中需要使用的.conf文件是不同的。您还需要安装数字证书。因为如您所知,这就是SSL 加密方式的工作逻辑。

您可以自己创建数字证书,也可以安装由主管部门颁发的数字证书。假设您已经安装了数字证书,您需要做的很简单。

此步骤的不同之处在于您将在配置文件中进行的更改。以下是 SSL 和 WebDAV 使用的示例配置文件:

<Location /subversion>
    DAV On
    SSLRequireSSL
    Options None
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /subversion/passwd
    Require valid-user
</Location>

如您所见,https://和http://协议之间的区别在配置文件的更改方面并没有那么大。完成这些更改后,您需要重新启动apache2服务。运行systemctl restart apache2.service这样做。

为什么要使用Subversion?

作为版本跟踪器,Subversion 会记住对文件和目录所做的每一次更改。它使您可以访问正在使用的软件或文档的旧版本并找到它们之间的差异。这使得管理项目更容易,尤其是在您的开发团队很大或分散的情况下。

除了 Subversion 之外,还有许多适用于 Linux 的版本控制系统,您也可以考虑。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK