FreeBSD ハンドブック
前のページ | 付録 A. FreeBSD の入手方法 | 次のページ

# A.6. Subversion を使う

## A.6.1. はじめに

2012 年 7 月から、FreeBSD はすべてのソースコード、ドキュメント、Ports Collection を管理するメインのバージョン管理システムに Subversion (svn) を使っています。

> 注意: 一般的には Subversion は開発者向けのツールです。 大部分のユーザは、FreeBSD のベースシステムのアップデートに FreeBSD Update、 Ports Collection のアップデートには Portsnap を使うべきでしょう。

Subversion では、リポジトリの指定に `protocol://hostname/path` 形式の URL を用います。 以下に記載されているように、 ミラーサイトは異なる複数のプロトコルに対応しています。 アクセスする FreeBSD のリポジトリは、パス (path) の最初で指定します。 リポジトリは 3 つあります。 `base` は FreeBSD ベースシステムのソースコード、 `ports` は Ports Collection、 そして `doc` はドキュメントのリポジトリです。 たとえば、 `svn://svn0.us-east.FreeBSD.org/ports/head/` という URL は、`svn` プロトコルによる `svn0.us-east.FreeBSD.org` ミラー上の ports リポジトリのメインブランチを示しています。

## A.6.2. インストール

リポジトリの中身をチェックアウトできるよう、事前に Subversion をインストールしておく必要があります。 もし、すでに ports ツリーが用意してあれば、 以下のようにして Subversion をインストールできます。

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

もし ports ツリーを利用できなければ、package から Subversion をインストールできます。

    # pkg_add -r subversion

もし、packages の管理に pkgng を使っているのであれば、かわりに以下のようにして Subversion をインストールできます。

    # pkg install devel/subversion

## A.6.3. Subversion の実行

`svn` コマンドを使って、 必要なリポジトリのソースコードを以下のようにしてダウンロードします。 このディレクトリにあるファイルを ローカル作業コピー と呼びます。

> 警告すでにローカルディレクトリが存在していても、 それが `svn` によって生成されたディレクトリでなければ、 チェックアウトする前に名前を変更するか、削除してください。 `svn` 以外の方法で用意されたディレクトリでチェックアウトすると、 すでに存在するファイルと、 リポジトリから持ってきたファイルとの間で衝突が起きてしまいます。

以下のように入力して、リポジトリからチェックアウトしてください。

    # svn checkout svn-mirror/repository/branch lwcdir

ここで、`repository`, `branch` および `root` は以下のとおりです。

- `svn-mirror` は、 Subversion ミラーサイト のひとつの URL です。

- `repository` には、 プロジェクトのリポジトリ、すなわち `base`, `ports`, または `doc` のどれかひとつを指定します。

- `branch` は、使うリポジトリによります。 `ports` および `doc` では、ほとんどの変更が `head` ブランチで行われます。 `base` リポジトリでは、`head` ブランチで -CURRENT の最新バージョンを管理しています。 -STABLE ブランチの最新バージョンは、8.`x` は `stable/8`、 9.`x` は `stable/9` で管理しています。

- `lwcdir` は、 指定したブランチの中身が置かれるターゲットのディレクトリです。 通常 `ports` は `/usr/ports`、 `base` は `/usr/src`、 そして `doc` では `/usr/doc` と指定します。

以下の例では、Ports Collection を western US リポジトリから HTTPS プロトコルを使って、チェックアウトします。 そしてそれらは、 `/usr/ports` のローカル作業コピーに置かれます。 もし `/usr/ports` がすでに存在して、 それが `svn` によって生成されたものでなければ、 チェックアウトする前に、名前を変更するか削除してください。

    # svn checkout https://svn0.us-west.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.6.4. より詳しい情報

Subversion の利用に関する他の情報は、Version Control with Subversion や Subversion Documentation といった “Subversion Book” をご覧ください。

前のページ | ホーム | 次のページ
CTM を使う | 上に戻る | Subversion ミラーサイト

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。