A.3. 使用 Subversion
前一頁 | 附錄 A. 取得 FreeBSD | 下一頁

## 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`, `ports` 或 `doc`。

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

- `lwcdir` 則是要存放指定分支內容的目標目錄，通常 `ports` 會置於 `/usr/ports`，`base` 會置於 `/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。

前一頁 | 上一層 | 下一頁
A.2. FTP 站 | 起始頁 | A.4. 使用 rsync

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

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