A.5. Subversion を使う

A.5.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.5.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.5.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.xstable/8, 9.xstable/9, そして 10.xstable/10 で管理しています。

  • lwcdir は、 指定したブランチの中身が置かれるターゲットのディレクトリです。 通常 ports/usr/portsbase/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.5.4. より詳しい情報

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

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

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

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。