A.3. 使用 Subversion

A.3.1. 簡介

自 2012 年 7 月起,FreeBSD 儲存所有 FreeBSD 的原始碼、文件與 Port 套件集均使用 Subversion 作為其唯一的版本控制系統。

注意:

Subversion 只是一套開發人員工具。一般使用者可能會較喜歡使用 freebsd-update (節 23.2, “FreeBSD 更新”) 來更新 FreeBSD 基礎系統及 portsnap (節 4.5, “使用 Port 套件集”) 來更新 FreeBSD Port 套件集。

本節將示範如何在 FreeBSD 系統安裝 Subversion 以及使用它建立一個本地的 FreeBSD 檔案庫複本,也包含使用 Subversion 的其他資訊。

A.3.2. 根 SSL 憑證

安裝 security/ca_root_nss 可讓 Subversion 能夠驗証 HTTPS 檔案庫伺服器的身份。root SSL 憑証可從 Port 安裝:

# cd /usr/ports/security/ca_root_nss
# make install clean

或從套件:

# pkg install ca_root_nss

A.3.3. Svnlite

svnlite 為輕量化版的 Subversion,會隨 FreeBSD 安裝。Subversion 的 Port 或套件版本僅在要使用其 Python 或 Perl API 或想要使用最新版本 Subversion 時才需安裝,

與正常 Subversion 唯一的差別只是指令名稱改為 svnlite

A.3.4. 安裝

若無法使用 svnlite 或需要完整版本的 Subversion 就必須安裝。

Subversion 可從 Port 套件集安裝:

# cd /usr/ports/devel/subversion
# make install clean

Subversion 也可以以套件安裝:

# pkg install subversion

A.3.5. 執行 Subversion

要下載原始碼乾淨的複本到本地目錄可使用 svn。在此目錄中的檔案稱作 本地工作複本 (Local working copy)

警告:

在第一次使用 checkout 前請先移動或刪除目地現有的目錄。

在現有非 svn 目錄存在的情況下做取出 (Checkout) 的動作會導致現有檔案與檔案庫中的檔案發生衝突。

Subversion 使用 URL 來指定檔案庫,使用的格式為 protocol://hostname/path。路徑的第一個部份為要存取的 FreeBSD 檔案庫,目前有三個檔案庫,base 為 FreeBSD 基礎系統原始碼、ports 為 Port 套件集以及 doc 為說明文件。舉例來說,URL https://svn.FreeBSD.org/ports/head/ 代表 Port 檔案庫的主要分支,使用 https 通訊協定。

使用指令從指定的檔案庫取出 (Checkout) 原始碼如下:

# svn checkout https://svn.FreeBSD.org/repository/branch lwcdir

where:

  • repository 要是下列專案檔案庫其中之一:base, portsdoc

  • branch 則依據使用的檔案庫來決定。portsdoc 大部份的更新皆在 head 分支,而 base 則會將 -CURRENT 的最新版本存放在 head 下,-STABLE 分支各自最新的版本則會放在 stable/9 (9.x) 與 stable/10 (10.x) 下。

  • lwcdir 則是要存放指定分支內容的目標目錄,通常 ports 會置於 /usr/portsbase 會置於 /usr/src 以及 doc 會置於 /usr/doc

以下範例會使用 HTTPS 協定從 FreeBSD 的檔案庫取出 Port 套件集,並將本地工作複本放置於 /usr/ports。若 /usr/ports 已存在,且不是由 svn 所建立的,記得要在取出之前重新命名或刪除。

# svn checkout https://svn.FreeBSD.org/ports/head /usr/ports

由於首次取出的動作必須下載遠端檔案庫中完整的分支,會需要花費一段時間,請耐心等候。

首次取出之後,往後要更新本地工作複本可以執行:

# svn update lwcdir

要更新上述範例所建立的 /usr/ports 可執行:

# svn update /usr/ports

因為只會傳輸有更新過的檔案,更新的動作會比取出還要快速。

另一種在取出之後更新本地工作複本的方式是透過 /usr/ports, /usr/src 以及 /usr/doc 目錄所提供的 Makefile。設定 SVN_UPDATE 並使用 update 目標。例如要更新 /usr/src

# cd /usr/src
# make update SVN_UPDATE=yes

A.3.6. Subversion 鏡像站

FreeBSD Subversion 的檔案庫為:

svn.FreeBSD.org

這是可公開存取的鏡像站,使用了 GeoDNS 會自動選擇適合的後端伺服器。若要由瀏覽器檢視 Subversion 檔案庫可以使用 https://svnweb.FreeBSD.org/

HTTPS is the preferred protocol, but the security/ca_root_nss package will need to be installed in order to automatically validate certificates.

A.3.7. 取得更多資訊

要取得其他有關使用 Subversion 的資訊請參考 Subversion Book,其書名為 Version Control with Subversion 或是 Subversion Documentation

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。