Categories: プログラミング

subversion環境 構築・運用メモ(Linuxサーバ・Windowsクライアント)

■subversion環境 構築・運用メモ(Linuxサーバ・Windowsクライアント)


Linux上にsubversionサーバを置き、WindowsのTortoiseSVNで運用するための環境構築メモ
Linuxのコマンドラインでも運用できるようですが、運用はツールの充実しているWindowsがよろしいかと・・・・
サーバ側構築(Linux ubuntu10.04で作成
リポジトリへの接続方法
svn:// = svnserverへの直接接続
file:// = ネットワークディスク上のリポジトリへ接続
file:/// = ローカルディスク上のリポジトリへ接続
http:// = webDAV経由で接続
リポジトリ置き場dir構成検討
/var/svnrepo/repo01 ← リポジトリが増えたら/repo02 /repo03と増やしていく
/var/svnrepo/conf ← .htpasswd等各リポジトリ共通の設定を置きたい
/var/svnrepo/doc ← 設定メモなど分散しないようにここに入れる
svnサーバ
1) リポジトリ用ディレクトリの準備
1-1)
リポジトリ用ディレクトリ作成 mkdir /var/svnrepo
1-2) svn用ユーザ作成 adduser svnuser
1-3) 所有者変更 chown svnuser:svnuser /var/svnrepo
2) subversionのインストールと設定
2-1)
apt-get update
2-2) apt-get install subversion インストールされたバージョンは1.6.6(r40053)
2-3) apt-get install subversion-tools
2-4) apt-get install libapache2-svn
2-3) /etc/inetd.confの編集
svn stream tcp nowait svnuser /usr/sbin/tcpd /usr/bin/svnserv -i -r /var/svnrepo を追記 ← inetdでのsvn接続用
3) リポジトリの作成
3-1) /var/svnrepoに移動
3-2) svnadmin create repo01
3-3) /var/svnrepo/repo1/conf/svnserve.confの編集
[general]
anon-access = none ←コメントを外す
auth-access = write ←コメントを外す
password-db = passwd ←コメントを外す
3-4) /var/svnrepo/repo1/conf/passwdの編集
[users]
taro = ******
hanako = ******
3-5) pc再起動
ここまででinetd経由のsvn://形式でリポジトリとの接続が可能
以下Apache2でのwevDAV用設定
4) apache2の設定
4-1)
/etc/apache2/mods-enabled/dav_svn.conf編集
<location /svn>
DAV svn
SVNParentPath “/var/svnrepo”
#BASIC認証有効
AuthType Basic
AuthName “Subversion repository”
AuthUserFile /var/svnrepo/conf/.htpasswd
Require valid-user
</location> を追加
4-2) .htpasswdの作成 htpasswd -c /var/svnrepo/conf/.htpasswd taro
(ユーザーの追加時-cを付けると上書きされて以前のユーザが無くなる、-cは作成時のみ)
パスワード入力
4-3) /etc/init.d/apache2 restart 又はpc再起動
現状の問題点
とりあえず動く、但しhttpで繋いだ場合、新規のフォルダ作成できない、ファイル追加不可 → パーミッションの問題だと思う・・・・
inetd経由以外の接続で認証方法を調査
リポジトリのバックアップ/リストア
svnadmin dump /var/svnrepo/repo1 > repobackup1
svnadmin create /var/svnrepo/repo10 ← 新しいリポジトリ
svnadmin load /var/svnrepo/repo10 < repobackup1
運用
WindowsでtortoiseSVNを使う
ソフト → http://sourceforge.net/projects/tortoisesvn/
説明書 → http://tortoisesvn.net/docs/release/TortoiseSVN_ja/index.html
1) tortoiseSVNのリポジトリブラウザから各ジョブ毎のディレクトリを作る
1-1)
/repo01/job1/branches(ブランチ用)
1-2) /repo01/job1/tags(リビジョンマーク用)
1-3) /repo01/job1/trunk(メインブランチ用)
参考)サーバ側で行う場合は
svn mkdir file:///var/svnrepo/repo01/job1/trunk -m “trunk作成”
svn mkdir file:///var/svnrepo/repo01/job1/branches -m “branches作成”
svn mkdir file:///var/svnrepo/repo01/job1/tags -m “tags作成”
2) /trunkに管理したいディレクトリをインポート
3) /trunkのリポジトリをローカルの作業フォルダにチェックアウト
4) 運用
チェックアウトした作業フォルダで「更新」→「変更」→「コミット」の繰り返し。
(「変更」には「追加」「削除」が含まれる。追加と削除はコンテキストメニューから行う)
5) tortoiseSVNの便利な機能
5-1)
「元に戻す」 = 作業コピーで変更したファイルを変更前に戻す
5-2) ブランチ・タグ → 単なるディレクトリのコピーを作成する機能(コピーするRevが選択できる)
あるタイミングでディレクトリ一式を保存しておきたい時などにブランチ・タグでコピーを作成する
先URLで 「repo01/branches/v20101021_rel1.1」「repo01/tags/v20101021_rel1.1」などディレクトリ名を付けてコピーする
svnはbranchesもtagsも特に区別していないらしいので運用側で工夫して使う(tagsはコミット時に確認ありの特性を利用)
コピーをとりたいときは「tags」に取り、「branches」はリリースしたタイミングやtagsを修正したもので使うのがいいらしい
5-3) 外部参照 → 調査中
A) トラブルシューティング
Authorization failed が出る場合 → svnserve.confの3項目をチェック
Can’t open file ‘/var/svnrepo/repo01/db/txn-current-lock’: Permission deniedが出る場合 → ディレクトリのパーミッションに権限がない
これから調べること
外部参照
作業フォルダを右クリックしてドラッグしたときのコンテキストメニューの機能
httpで接続した場合のパーミッション
kabekin