|
(2005-12-05) |
SVN(Subversion)/バージョン管理 |
|
Webサイトをある程度の期間運用していくと、プログラムファイルだけでなく、HTML文書や設定ファイルなどが新旧混ざり合って管理が面倒になってきますし、間違いも起きます。
ここで必要になってくるのがバージョン管理システムです。
古くから使われているのが CVS というシステムですが、ここでは改良版の Subvesion(SVN) を利用することにします。 これにはコマンドラインベースの UNIX版だけでなく、Windows 版の TortoiseSVN もあり、通常のフォルダ操作感覚で使用できます。
バージョン管理システムは、変更履歴を累積したバックアップシステムとしても利用できるため、Webサイトやサーバーだけでなく、日常のクライアント作業の万が一のバックアップとしても手軽に使えそうです。
SVN や CVS は実際の作業用フォルダ以外に、リポジトリという領域に最初のデータとそれ以降の更新履歴や差分情報を蓄積していきます。
複数サーバー間でのバージョン管理 |
|
ここでは、複数サーバーで、HTML、PHP ライブラリ、各アプリケーションのバージョン管理を行う構成を考えてみます。
当然、各マシンには Subversion をインストールしておく必要があります。
作業用クライアントマシンには TortoiseSVN を利用します。
Subversion はWebベースでのアクセスもサポートしていますが、セキュリティ等を考慮して SSH アクセスのみを採用します。
従って、Apache 関係の設定や Subversion サーバー等の設定は行いません。
リポジトリは関連性のあるもの毎にまとます。
HTMLは Soft-inn のページだけですので、これは他と独立させます。
ライブラリはアプリケーションとは関連させずに修正・更新を行いますので、これも独立したリポジトリとします。
アプリケーションも更新が影響し合わないものは独立させます。
FreeBSD では Ports からインストールすれば特に問題はありません。ルートになって
# cd /usr/ports/devel/subversion
# make; make install
これだけで終わりです。
TortoiseSVN は http://tortoisesvn.tigris.org/ からダウンロードできます。
インストーラに従って進めていけば特に問題は無いでしょう。
インストール終了後、何も変わったところがないので?かもしれませんが、任意のフォルダで右クリックすると、TortoiseSVN というメニュー項目が増えています。全てはここから操作するようになってます。
SSH は Putty でアクセスできれば、 svn+ssh:// でリポジトリを指定することで特に設定は必要ありません。
インストールや設定についてはぐぐってみると詳しいサイトがたくさんみつかりますのでそちらを参照して下さい。
リポジトリと作業フォルダの構築 |
|
まずはリポジトリの作成です。
リポジトリは一種のバックアップファイルのようなもので、実際の位置はどこでも構いません。CVS と異なるのは、単なるファイル・ディレクトリの形式でなくデータベース化されていることです。形式には2通りあり、バークレーDBとfsfs です。fsfs はバークレーDBの問題に対処したもので、まだまだ枯れていないという点はありますがこちらの方が無難かもしれません。リポジトリ作成時に指定できます。
ここでは、サーバー側にリポジトリ専用ユーザー(一応、svn とします)を作成し、SSH アクセス用に ~/.ssh/authorized_key へ公開鍵を登録する事にします。
準備ができたら svn ユーザーでログインし、
% svnadmin create --fs-type fsfs SVNROOT
これで SVNROOT 以下に次のようなサブディレクトリができていればOKです。
-rw-r--r-- 1 svn svn 379 11 30 03:29 README.txt drwxr-xr-x 2 svn svn 512 11 30 03:29 conf drwxr-xr-x 2 svn svn 512 11 30 03:29 dav drwxr-sr-x 5 svn svn 512 11 30 03:29 db -r--r--r-- 1 svn svn 2 11 30 03:29 format drwxr-xr-x 2 svn svn 512 11 30 03:29 hooks drwxr-xr-x 2 svn svn 512 11 30 03:29 locks
* このディレクトリ以下は直接いじってはいけません! svn のコマンドを使用します。
SVNROOT は任意の名称を使用できます。 用途別にリポジトリを分けるなら、
% svnadmin create --fs-type fsfs html
% svnadmin create --fs-type fsfs svnlib
:
こんな感じで作っていけば良いでしょう。
作成したリポジトリはTortoiseSVNのリポジトリブラウザから確認できます。
デスクトップや任意のフォルダー上で右クリック、表示されたコンテクストメニューからリポジトリブラウザを開きます。
リポジトリへのアクセスには url を用います。ここでは、アクセスに ssh を用いる事にしていますから、
svn+ssh://svn@192.168.0.1/home/svn/html
svn+ssh://svn@192.168.0.1/home/svn/svnlib
と url を入力します。
こういう風に表示できればOKです。
サーバー上のコマンドラインでは毎回 url の入力が必要ですが、リポジトリブラウザでは url を記憶しておいてくれますから、こちらの方が楽でしょう。
HTML ではあまりありませんが、プログラムでは部分的に異なる複数のプロジェクトが必要になることがあります。
こうしたものをブランチと呼びますが、リポジトリにサブフォルダを用意しておくことでいつでもブランチを作成できます。
習慣的にメインになるものを trunk, ブランチを branches, タグ情報のみを tags とします。
表示されているリポジトリの上で右クリックするとコンテキストメニューが開きますので、「フォルダを作成」からそれぞれのフォルダを追加していきます。
ライブラリは複数ありますが、依存関係があるため、同一リポジトリ内でトップレベルのフォルダを分け、その下でブランチの管理を行っていくことにします。
HTML はライブラリのような依存関係はありません。ブランチの管理も必要なさそうですが、構成を大幅に変更するとき、ブランチで管理することは役に立ちそうですので、一応、作成しておきます。
実際のサーバー上では、このようなディレクトリが作成されるわけではありません。
db 以下のデータベース内に仮想的なディレクトリが作成されており、リポジトリブラウザやサーバー上では svn コマンドでなければアクセスできません。
新しくプロジェクトをスタートさせるなら、以下の操作は飛ばしますが、既存データをバージョン管理する場合、リポジトリへ登録しなければなりません。
サーバー上では svn import コマンドを使用しますが、Windows 上のデータであれば TortoiseSVN のフォルダ操作機能を使用します。
インポートしたいフォルダへ移動し、右クリックでコンテキストメニューからインポートを選びます。
インポートしたいリポジトリを選択し、OKをクリックすると登録が始まります。
なお、ブランチの管理のため、trunk ディレクトリを指定します。
svn+ssh://svn@192.168.0.1/home/svn/html/trunk
登録が完了するとリポジトリブラウザは次のようになります。
インポートした元のフォルダは svn の管理対象にはなりません。
別途、作業フォルダを作成してそこへ登録データをダウンロードしなければなりません。
これが以下のチェックアウトという操作です。
作業フォルダは新しく作成します。
作成したフォルダへ移動し、右クリックしてコンテキストメニューから「svnチェックアウト」を選択します。
ダイアログから目的のリポジトリを選択します。
チェックアウトが完了すると、作業フォルダ内の全てのアイコンが以下のように変更されている事を確認します。
運用 | |
準備中
Copyright © 2001 - 2005, Hidetomo Harikawa, All rights reserved