在 Linux 服務(wù)器上使用 Subversion 版本控制系統(tǒng)
Subversion 是一個(gè)開源版本跟蹤系統(tǒng)。它將文件保存在中央存儲庫中,并提供對目錄或文件的版本控制。作為開發(fā)人員,您可以從存儲庫中提取項(xiàng)目文件,對其進(jìn)行更改,然后再次將其推回。
Subversion 還有一個(gè)服務(wù)器組件,您可以使用它來托管您的項(xiàng)目。它的工作原理很像普通的文件服務(wù)器。
如何安裝 Subversion
Subversion 易于安裝。您可以使用適當(dāng)?shù)拿顬槟陌l(fā)行版開始:
# Debian, Ubuntu
sudo apt install subversion apache2 libapache2-mod-svn
# CentOS, Fedora, RHEL
sudo dnf install subversion httpd mod_dav_svn
請注意,此命令還會安裝 Apache2 Web 服務(wù)器。如果您想通過 HTTP 或 WebDAV 訪問 Subversion 存儲庫,您將需要一個(gè) Web 服務(wù)器。您也可以使用 HTTPS,您只需要安裝和配置數(shù)字證書即可。
運(yùn)行此命令后,您可以檢查是否正確安裝了 subversion。您現(xiàn)在應(yīng)該能夠運(yùn)行svn命令,并且可以使用–version選項(xiàng)查看當(dāng)前版本:
使用 Subversion 配置服務(wù)器
如果安裝順利,您現(xiàn)在可以開始處理將與svn一起使用的存儲庫配置。當(dāng)然,您需要為此創(chuàng)建一個(gè)新的存儲庫。首先,在根目錄中創(chuàng)建一個(gè)文件夾來放置您的存儲庫:
sudo mkdir /subversion
如果您需要通過 HTTP 使用 WebDAV 訪問您的存儲庫,您需要授予 Apache 對其目錄的所有權(quán)。
sudo chown linuxmi:linuxmi /subversion
您現(xiàn)在可以切換到linuxmi用戶并開始處理您的存儲庫。以www-data用戶身份登錄的命令是:
sudo su -s /bin/bash linuxmi
您現(xiàn)在是 Apache 用戶,在此步驟之后,您可以創(chuàng)建您的 Subversion 存儲庫,如下所示:
svnadmin create /subversion/myrepo
您現(xiàn)在有一個(gè) Subversion 存儲庫。為了使這個(gè)存儲庫更加安全并識別其用戶,下一步是創(chuàng)建一個(gè)用戶并為其設(shè)置密碼。為此,請使用以下命令:
htpasswd -cmb /subversion/passwd myadmin mypass
根據(jù)此命令,您的用戶名將是myadmin,您的密碼將是mypass。您可以將這些值更改為適合您情況的任何值。
您的 Subversion 存儲庫現(xiàn)在可以使用了。在這個(gè)階段,您可以使用exit命令退出www-data用戶。
或者:
現(xiàn)在您可以使用以下命令將所需的項(xiàng)目或文件發(fā)送到您的存儲庫:
sudo svn import /home/linuxmi/linuxmi/ file:///subversion/myrepo -m "First Commit"
此命令使用import參數(shù)將項(xiàng)目文件夾中的所有內(nèi)容推送到 Subversion 存儲庫。執(zhí)行此操作時(shí),您需要使用-m參數(shù)添加提交消息。
或者:
在 Subversion 中使用訪問方法
您可能已經(jīng)注意到您正在使用file://協(xié)議將項(xiàng)目添加到您的存儲庫。這只是您可以用來訪問 svn 存儲庫的幾種網(wǎng)絡(luò)協(xié)議之一。您還可以通過 HTTP 或 HTTPS 使用 WebDAV 協(xié)議,或 subversion 的自定義svn協(xié)議。
直接訪問存儲庫
如您所見,您可以使用file://協(xié)議訪問本地存儲庫。以下是如何將本地存儲庫簽出到當(dāng)前目錄:
svn co file:///subversion/myrepo
當(dāng)您簽出 repo 時(shí),svn 會顯示它包含的文件列表:
或者:
使用 WebDAV 訪問
要將 Subversion 存儲庫與 Apache 集成,您需要配置一些設(shè)置。
第一步,使用以下命令激活dav、dav_svn和dav_fs模塊:
sudo a2enmod dav dav_fs dav_svn
激活所需模塊后,您現(xiàn)在可以編輯/etc/apache2/mods-enabled/dav_svn.conf文件。如果該文件尚不存在,則創(chuàng)建該文件,并按如下方式更改其內(nèi)容:
<Location /subversion>
DAV svn
SVNPath /subversion/myrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Require valid-user
</Location>
AuthUserFile設(shè)置引用您之前使用htpasswd創(chuàng)建的文件。在此處添加它將授予文件中命名的所有用戶存儲庫訪問權(quán)限,前提是他們使用有效密碼進(jìn)行身份驗(yàn)證。
創(chuàng)建并保存此文件后,使用以下命令重新啟動 Apache2 服務(wù):
sudo systemctl restart apache2.service
現(xiàn)在,當(dāng)您打開 Web 瀏覽器并轉(zhuǎn)到http://localhost/subversion/時(shí),您將看到存儲庫的內(nèi)容。當(dāng)您訪問此地址時(shí),它會詢問您的用戶名和密碼:
使用您之前設(shè)置的用戶名(例如myadmin)和密碼(mypass)登錄。輸入用戶名和密碼后,您可以使用 WebDAV 訪問您的 Subversion 存儲庫:
使用 SSL 和 WebDAV 訪問
https://協(xié)議與http://協(xié)議的配置幾乎相同,只有一些重要的區(qū)別。舉個(gè)例子,你在配置過程中需要使用的.conf文件是不同的。您還需要安裝數(shù)字證書。因?yàn)槿缒@就是SSL 加密方式的工作邏輯。
您可以自己創(chuàng)建數(shù)字證書,也可以安裝由主管部門頒發(fā)的數(shù)字證書。假設(shè)您已經(jīng)安裝了數(shù)字證書,您需要做的很簡單。
此步驟的不同之處在于您將在配置文件中進(jìn)行的更改。以下是 SSL 和 WebDAV 使用的示例配置文件:
<Location /subversion>
DAV On
SSLRequireSSL
Options None
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Require valid-user
</Location>
如您所見,https://和http://協(xié)議之間的區(qū)別在配置文件的更改方面并沒有那么大。完成這些更改后,您需要重新啟動apache2服務(wù)。運(yùn)行systemctl restart apache2.service這樣做。
為什么要使用Subversion?
作為版本跟蹤器,Subversion 會記住對文件和目錄所做的每一次更改。它使您可以訪問正在使用的軟件或文檔的舊版本并找到它們之間的差異。這使得管理項(xiàng)目更容易,尤其是在您的開發(fā)團(tuán)隊(duì)很大或分散的情況下。
除了 Subversion 之外,還有許多適用于 Linux 的版本控制系統(tǒng),您也可以考慮。