Subversionを使う

HOME > それいけ Linux > 版管理
Last modified: Fri Oct 31 10:54:03 +0900 2008

必要なもの

% sudo apt-get install apache2-mpm-worker libapache2-dav-svn

apache2-mpm-workerapache2-mpm-*のうちの どれか。

設定

/etc/apache2/mods-available/以下にあるsvn関係の設定 ファイルへのリンクを/etc/apache2/mods-enabled/以下に作成. あれ,dav_svn.loadのなかで,LoadModuleがコメントアウトさ れているなぁ.なんでだろう.

% cd /etc/apache2/mods-enabled
% sudo ln -fs ../modes-available/*dav* ./

/etc/apache2/httpd.confに以下を追加.うーん, /etc/apache2/mods-available/dav_svn.confを直接変更した 方がいいのかなぁ.

<Location "/svn/repos">
   DAV svn                      # Subversionを使う
   SVNPath /usr/local/svn/repos # リポジトリへのパス
</Location>

認証

認証をかけるには以下のようにします。

<Location "/svn/repos">
   AuthName "Subversion Repository" # realmの指定
   AuthType Basic                   # 認証方法の指定
   AuthUserFile /path/to/.htpasswd  # パスワードファイルの指定
   require user hoge                # 有効なユーザ名の指定
   DAV svn                          # Subversionを使う
   SVNPath /usr/local/svn/repos     # リポジトリへのパス
</Location>

同じサーバ上の複数の認証がかけられていても、一度認証されたrealm と同じrealmであれば、クライアント(ブラウザ等)は同じパスワードを 黙って送ってくれます。

有効なユーザ名はrequire valid-userとすることも出来 ます。こうするとパスワードファイル中のどのユーザでもアクセスする ことが出来ます。

他にもグループによる指定等も出来ます。

パスワードファイルの作り方

新規に作成

% htpasswd -c /path/to/.htpasswd username

ユーザ追加

% htpasswd /path/to/.htpasswd username

初期化

# mkdir -p /usr/local/svn
# svnadmin create /usr/local/svn
# chown -R www-data:www-data /usr/local/svn/repos

リポジトリに登録

% svn import [登録するファイル/ディレクトリへのパス] リポジトリのURL

登録するファイル/ディレクトリへのパスが省略されると .を指定されたものと見なされます。

使用例はこんな感じ

% svn import -m "test" ~/work/ruby http://localhost/svn/repos/

これだと~/work/ruby以下のファイルがインポートされ、 http://localhost/svn/repos/で見ることができます。 -m &quot;test&quot;はコミットメッセージです。省略すると環境変数 EDITORに指定されているエディタで編集することになりま す。

古いsvnだと以下のような書式かもしれません.

% svn import リポジトリのURL [登録するファイル/ディレクトリへのパス [リポジトリ上のパス]]

リポジトリ上のパスが省略されるとリポジトリの直下にイ ンポートされます。

チェックアウト

% svn co リポジトリのURL [ワーキングコピーを置くディレクトリ]

ワーキングコピーを置くディレクトリが省略されると .が指定されたものとみなされます。

例えばこんな感じ

% svn co http://localhost/svn/repos/ruby /tmp/

エクスポート

リリース用チェックアウト(?)

% svn export リポジトリのURL [ワーキングコピーを置くディレクトリ]

コミット

% svn ci

あとは、チェックアウト=&gt;編集=&gt;コミットを繰り返します。

モジュールに追加

ファイルやディレクトリをモジュールに追加するときは以下を実行しま す。

% svn add ファイル名

モジュールから削除

ファイルやディレクトリをモジュールから削除するときは以下を実行しま す。

% rm ファイル名
% svn delete ファイル名

プロバティ

リポジトリ内のHTMLファイルをブラウザで見たときにソースではなくて 整形されたファイルを見せるにはプロバティを設定します。こうするこ とにより、サイト自体をSubversionで管理することができます。

例えば以下のようにしてからコミットするとそれなりに見えるかもしれ ません。

% find . -regex ".*\.html\(\...\)?" -exec svn propset svn:mime-type "text/html; charset=UTF-8" {} \;
% find . -name "*.css" -exec svn propset svn:mime-type text/css {} \;
% find . -name "*.png" -exec svn propset svn:mime-type image/png {} \;
% find . -name "*.gif" -exec svn propset svn:mime-type image/gif {} \;
% find . -regex ".*\.\(jpg\|jpeg\|jpe\)" -exec svn propset svn:mime-type image/jpeg {} \;

クリーンアップ

svnの実行途中にC-c等してロックが残った りすることがあります。そんなときは以下のようにクリーンアップして あげます。クリーンアップするとロックを解除するだけではなく終了し ていないの操作を再開したりします。

% svn cleanup