maehachi08 Anything Blog

2012年05月07日
Subversionインストール~リポジトリ作成~プロジェクト作成~ブランチ作成

subversionインストール

まずは、subversionをインストールします。

# yum -y install subversion

# rpm -qa | grep "subversion"
subversion-1.6.11-7.el5_6.4
subversion-1.6.11-7.el5_6.4

# svn --version
svn, バージョン 1.6.11 (r934486)
   コンパイル日時: Jun  8 2011, 16:22:13

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

以下のリポジトリアクセス (RA) モジュールが利用できます:

* ra_neon : Neon を利用して WebDAV (DeltaV) プロトコルでリポジトリにアクセスするモジュール。
  - 'http' スキームを操作します
  - 'https' スキームを操作します
* ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。
  - Cyrus SASL 認証を併用
  - 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。
  - 'file' スキームを操作します

# svnadmin --version
svnadmin, バージョン 1.6.11 (r934486)
   コンパイル日時: Jun  8 2011, 16:22:13

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

以下のリポジトリバックエンド (FS) モジュールが利用できます:

* fs_base : Berkeley DB リポジトリを扱うためのモジュール。
* fs_fs : プレインファイル (FSFS) リポジトリを扱うためのモジュール。

レポジトリ構築

# mkdir /subversion

# svnadmin create /subversion


# ls -la /subversion
合計 32
drwxr-xr-x  6 root root 4096  5月  6 17:32 .
drwxr-xr-x 26 root root 4096  5月  6 17:31 ..
-rw-r--r--  1 root root  229  5月  6 17:32 README.txt
drwxr-xr-x  2 root root 4096  5月  6 17:32 conf
drwxr-sr-x  6 root root 4096  5月  6 17:32 db
-r--r--r--  1 root root    2  5月  6 17:32 format
drwxr-xr-x  2 root root 4096  5月  6 17:32 hooks
drwxr-xr-x  2 root root 4096  5月  6 17:32 locks

プロジェクトの作成

レポジトリとはsubversionで管理するファイルやディレクトリを置くための場所の定義に過ぎません。
そこに原本となるファイルやディレクトリを配置する作業が必要です。
今回はRailsアプリのプロジェクト全体をsubversion管理下にしてしまいます。

# svn import -m "maepachi.comの現在のソース" /usr/local/apache2/htdocs/maepachi.com/. file:///subversion/maepachi.com/trunk

# svn list file:///subversion/
maepachi.com/

# svn list file:///subversion/maepachi.com
trunk/

working copy作成

レポジトリは原本保管用のロッカーのようなものです。作業を行う場合は原本をコピー(check out)し、コピーを編集(vi/vim)後、原本にマージ(commit)を行うという流れを踏みます。

# mkdir /working

# cd working/

# svn co file:///subversion/maepachi.com/trunk .

# svn log
------------------------------------------------------------------------
r2 | root | 2012-05-06 17:55:38 +0900 (日, 06  5月 2012) | 1 line

maepachi.comの現在のソース
------------------------------------------------------------------------

一般ユーザのホームディレクトリでブランチ作成

リポジトリでのバージョン管理は容易なのですが、本番環境へのデプロイ元であることからいくつかの不安事項があります。例えば、ソースコーディングする中で試行錯誤している最中に他のメンバーが本番環境にデプロイしてしまう可能性などです。出来れば、ある程度動作確認を終えてから本番環境へのデプロイをしたいものです。そこで便利な機能がブランチです。
ブランチとは本来あるリポジトリの枝分かれとなるもので、実質、リポジトリのコピーです。
今回は/subversion/maepachi.com/trunkのブランチを/home/pachi以下に作成します。

まずはレポジトリ内にbranchを作成します。現在のレポジトリ構造はこのような形です。

# svn list file:///subversion/maepachi.com
trunk/

/subversion/maepachi.com以下にはtrunkディレクトリが存在します。maepachi.comプロジェクトのディレクトリは原本用のtrunk、開発用のbranchesなどに分けるのがセオリーみたいです。

# svn mkdir -m "create branch" file:///subversion/maepachi.com/branches

# svn mkdir -m "create branch" file:///subversion/maepachi.com/branches/TRY_hogehoge

# svn list file:///subversion/maepachi.com
branches/
trunk/

# svn list file:///subversion/maepachi.com/branches
TRY_hogehoge/

作成したbranchesにmaepachi.comのブランチを作成します。

# svn copy -m "copy file to branch dir" file:///subversion/maepachi.com/trunk file:///subversion/maepachi.com/branches/TRY_hogehoge

# svn list file:///subversion/maepachi.com/branches/TRY_hogehoge
trunk/

チェックアウトはブランチから

# su - pachi

$ pwd
/home/pachi

$ mkdir -p svn_copy/maepachi.com

$ svn co file:///subversion/maepachi.com/branches/TRY_hogehoge/trunk/