「Please make sure your seat backs are in their full, upright position, and that your tray tables are stored. Flight attendants, prepare for take-off….」
What follows is a quick tutorial that walks you through some basic Subversion configuration and operation. When you finish it, you should have a basic understanding of Subversion's typical usage.
The examples used in this appendix assume that you have svn, the Subversion command-line client, and svnadmin, the administrative tool, ready to go on a Unix-like operating system. (This tutorial also works at the Windows commandline prompt, assuming you make some obvious tweaks.) We also assume you are using Subversion 1.2 or later (run svn --version to check.)
Subversion はすべてのバージョン管理下のデータを中央のリポジトリに格納します。まず以下のようにして、新しいリポジトリを作りましょう。
$ svnadmin create /path/to/repos $ ls /path/to/repos conf/ dav/ db/ format hooks/ locks/ README.txt
このコマンドは Subversion リポジトリを含む新しいディレクトリ /path/to/repos
を作ります。この新しいディレクトリには (他のファイルに混じって) データベースファイルの集まりを含んでいます。内部を詳細に知る必要がなければ、このバージョン化されたファイルを見る必要はないでしょう。リポジトリ作成と保守についてのより詳しい情報は、第5章をご覧ください。
Subversion には「プロジェクト」という概念はありません。 リポジトリは単なる仮想的にバージョン化されたファイルシステム であり、どんなデータも含むことのできる大きなツリー構造です。 管理者によってはひとつのリポジトリにひとつのプロジェクトだけを 入れることを好みますが、他の管理者はディレクトリを分割した形で 複数のプロジェクトを格納することを好みます。両者のメリット、 デメリットについてはリポジトリ構成の計画項 で議論します。どちらの方法でもリポジトリは単にファイルとディレクトリ を管理するだけなので、特定のディレクトリを「プロジェクト」 であると解釈するかどうかは人間にまかされています。それで本書をつうじて プロジェクトを参照するときには、リポジトリに存在する、いま言ったような形 のいくつかのディレクトリ(あるいはディレクトリの集まり)についてだけ話を することに注意してください。
In this example, we assume that you already have some sort of project (a collection of files and directories) that you wish to import into your newly created Subversion repository. Begin by organizing your data into a single directory called myproject
(or whatever you wish). For reasons that will be clear later (see 第4章), your project's tree structure should contain three top-level directories named branches
, tags
, and trunk
. The trunk
directory should contain all of your data, while branches
and tags
directories are empty:
/tmp/myproject/branches/ /tmp/myproject/tags/ /tmp/myproject/trunk/ foo.c bar.c Makefile …
branches
, tags
, trunk
サブディレクトリは実際には Subversion に 必要なものではありません。後で利用する時におそらくもっとも便利になる ように考えられた、よく利用される命名規約にすぎません。
データツリーを作ったら、以下のように svn import コマンドでリポジトリにインポートします (リポジトリへのデータ移行項 をご覧ください)。
$ svn import /tmp/myproject file:///path/to/repos/myproject -m "initial import" Adding /tmp/myproject/branches Adding /tmp/myproject/tags Adding /tmp/myproject/trunk Adding /tmp/myproject/trunk/foo.c Adding /tmp/myproject/trunk/bar.c Adding /tmp/myproject/trunk/Makefile … リビジョン 1 をコミットしました。 $
これでリポジトリにツリーのデータが入りました。 すでに注意したように、リポジトリ中のファイルやディレクトリを詳しく 調べる必要はありません; すべてはデータベース中に格納されているもの だからです。しかしリポジトリの仮想的なファイルシステムを考えると、 いまの場合、最上位にディレクトリmyproject
が あり、その下にあなたのデータが含まれている形になります。
もとの /tmp/myproject
にはなにも変更がないことに注意してく ださい。(実際、必要ならこのディレクトリを消してしまうこともできま す)。リポジトリのデータを操作するためには、このデータのために、一種の 個人用の作業領域となる新しい「作業コピー」を作らなくてはな りません。Subversion に、リポジトリのmyproject/trunk
ディレ クトリ用の作業コピーを「チェックアウト」するように指示して みましょう:
$ svn checkout file:///path/to/repos/myproject/trunk myproject A myproject/foo.c A myproject/bar.c A myproject/Makefile … リビジョン 1 をチェックアウトしました。
これでmyproject
という名前の新しい ディレクトリ中にリポジトリのプライベートなコピーを手にしたことに なります。作業コピー中のファイルを編集し、その変更点をリポジトリに 書き戻すためにコミットすることができます。
作業コピーに行ってファイル内容を修正します。
svn diff を実行して 変更点に対する unified diff 出力を確認します。
svn commit を実行して、リポジトリに自分のファイルの新しいバージョンをコミットします。
svn update を実行して、リポジトリの「最新の」状態を自分の作業コピーに反映します。
作業コピーに対してできる、すべてのことの完全な手引きは 第2章 をお読みください。
この時点で、ネットワーク越しに別の人々にリポジトリを 利用可能にすることもできます。第6章を読んで利用可能ないくつかのサーバプロセス の違いについて把握し、どのように設定すれば良いかを理解してください。