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