在 Linux 服務器上使用 Subversion 版本控制系統
Subversion 是一個開源版本跟蹤系統。它將文件保存在中央存儲庫中,并提供對目錄或文件的版本控制。作為開發人員,您可以從存儲庫中提取項目文件,對其進行更改,然后再次將其推回。
Subversion 還有一個服務器組件,您可以使用它來托管您的項目。它的工作原理很像普通的文件服務器。
如何安裝 Subversion
Subversion 易于安裝。您可以使用適當的命令為您的發行版開始:
# Debian, Ubuntu
sudo apt install subversion apache2 libapache2-mod-svn
# CentOS, Fedora, RHEL
sudo dnf install subversion httpd mod_dav_svn
請注意,此命令還會安裝 Apache2 Web 服務器。如果您想通過 HTTP 或 WebDAV 訪問 Subversion 存儲庫,您將需要一個 Web 服務器。您也可以使用 HTTPS,您只需要安裝和配置數字證書即可。
運行此命令后,您可以檢查是否正確安裝了 subversion。您現在應該能夠運行svn命令,并且可以使用–version選項查看當前版本:
使用 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
您現在有一個 Subversion 存儲庫。為了使這個存儲庫更加安全并識別其用戶,下一步是創建一個用戶并為其設置密碼。為此,請使用以下命令:
htpasswd -cmb /subversion/passwd myadmin mypass
根據此命令,您的用戶名將是myadmin,您的密碼將是mypass。您可以將這些值更改為適合您情況的任何值。
您的 Subversion 存儲庫現在可以使用了。在這個階段,您可以使用exit命令退出www-data用戶。
或者:
現在您可以使用以下命令將所需的項目或文件發送到您的存儲庫:
sudo svn import /home/linuxmi/linuxmi/ file:///subversion/myrepo -m "First Commit"
此命令使用import參數將項目文件夾中的所有內容推送到 Subversion 存儲庫。執行此操作時,您需要使用-m參數添加提交消息。
或者:
在 Subversion 中使用訪問方法
您可能已經注意到您正在使用file://協議將項目添加到您的存儲庫。這只是您可以用來訪問 svn 存儲庫的幾種網絡協議之一。您還可以通過 HTTP 或 HTTPS 使用 WebDAV 協議,或 subversion 的自定義svn協議。
直接訪問存儲庫
如您所見,您可以使用file://協議訪問本地存儲庫。以下是如何將本地存儲庫簽出到當前目錄:
svn co file:///subversion/myrepo
當您簽出 repo 時,svn 會顯示它包含的文件列表:
或者:
使用 WebDAV 訪問
要將 Subversion 存儲庫與 Apache 集成,您需要配置一些設置。
第一步,使用以下命令激活dav、dav_svn和dav_fs模塊:
sudo a2enmod dav dav_fs dav_svn
激活所需模塊后,您現在可以編輯/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>
AuthUserFile設置引用您之前使用htpasswd創建的文件。在此處添加它將授予文件中命名的所有用戶存儲庫訪問權限,前提是他們使用有效密碼進行身份驗證。
創建并保存此文件后,使用以下命令重新啟動 Apache2 服務:
sudo systemctl restart apache2.service
現在,當您打開 Web 瀏覽器并轉到http://localhost/subversion/時,您將看到存儲庫的內容。當您訪問此地址時,它會詢問您的用戶名和密碼:
使用您之前設置的用戶名(例如myadmin)和密碼(mypass)登錄。輸入用戶名和密碼后,您可以使用 WebDAV 訪問您的 Subversion 存儲庫:
使用 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 的版本控制系統,您也可以考慮。