Home > Tags > svn

svn

subversion のバックアップ方法

以下のコマンドでバックアップできます。

/usr/share/doc/subversion-1.4.2/tools/backup/hot-backup.py /srv/svn/project /srv/backup/svn

デフォルトでは 64 個のバックアップが作成されてしまうので、最大 5 個になるようスクリプトを修正します。

# cd /usr/share/doc/subversion-1.4.2/tools/backup/
# diff hot-backup.py hot-backup.py.ori
37c37
<num_backups = 5
---
> num_backups = 64

毎日バックアップされるようクーロンを設定します。

# vi /etc/cron.daily/svn
# cat /etc/cron.daily/svn
#!/bin/sh

/usr/share/doc/subversion-1.4.2/tools/backup/hot-backup.py /srv/svn/project /srv/backup/svn
# chmod 755 /etc/cron.daily/svn

参考サイト
Subversion リポジトリのバックアップ、リストア - snbhsmt_log

あとは rsync で他のサーバに退避させる。

rsync -avz --delete /xxx/from/ 10.x.x.x:/xxx/to/

参考サイト
Command Technica:はじめてrsyncを使う方が知っておきたい6つのルール (2/2) - ITmedia エンタープライズ
Command Technica:rsyncを使った熟練者レベルのバックアップ (3/3) - ITmedia エンタープライズ

svn ディレクトリを除いてファイルのみを find する方法

find . -name .svn -prune -o -type f -print // find
find . -name .svn -prune -o -type f -print|grepl sample|xargs ls -l // find sample という名前のついたファイルを ls -l
find . -name .svn -prune -o -print0 | sudo xargs -0 chown xxx:xxx // svn ディレクトリを除いてユーザーを一括変更
find . -name .svn -prune -o -type f -print0 | sudo xargs -0 chmod 775 // svn ディレクトリを除いてパーミッションを一括変更
svn st|grep '^?'|awk '{print $2}' |xargs svn add // 一括で svn add

colinuxからproxyを通してsvnで通信する方法

colinuxから外部のリポジトリにアクセスできないなぁ、colinuxの設定かと悩んでいたら、単純にプロキシの設定でした。

修正箇所:~/.subversion/servers

[global]
http-proxy-host = プロキシサーバのホスト名
http-proxy-port = プロキシサーバのポート番号

svn addする時に複数ファイルを一括で追加する方法

普通に

svn add *

ではディレクトリを再帰的に辿ってくれない。
以下の方法なら辿ってくれる。

svn add * --force

SVNとTRACとSVK

複数ファイルを一括で文字列置換したい

今回行ったのは、Subversion のキーワード置換用の "$Id$" という文字列が入っていないファイルに対して一括で挿入する処理です。
ほんとうは実行結果のログも取得したいところですが、時間がなかったのでログはなしで。

for i in `find -name "*.php"`; do sed -e 's/@version.*$/@version $Id$/' $i > $i.new && mv $i.new $i; done

Subversion でキーワード置換を使うには

ファイルをメンテナンスする度にヘッダーコメントを修正するのは非常に手間だし修正忘れもよく起こりいいことがない。

以下の例のようにヘッダーコメントを自動で設定するようにしたい。

@version $Id: xxxxx.php 391 2007-01-01 18:36:59Z xxxxx $

調べてみるとこれはキーワード置換という CVS や SVN のようなバージョン管理ツールが持っている機能を使っているらしい。
以下はキーワード置換を有効にする方法。

Subversion の propset コマンドを使います。

find . -name "*.php" -exec svn propset svn:keywords "Id" {} ;

Id 以外のキーワードも使いたい場合は、ダブルコーテーションでくくって以下のようにします。

find . -name "*.php" -exec svn propset svn:keywords "Id Revision LastChangedBy Date" {} ;

あとは普通にコミットすれば自動で、$Id$ という文字列が展開されます。

あと毎回 propset コマンドで設定するのはめんどくさいので、ファイルを追加する時に自動で propset を設定するようにします。

どこでもいいのでディレクトリを右クリックします。※TortoiseSVN がインストールされているのが前提
で、右クリック->TortoiseSVN->設定->一般->Subversion の編集ファイル->編集 を実行。すると設定ファイルが開かれるので、

[miscellany]
enable-auto-props=yes
[auto-props]
*.php = svn:keywords=Id
*.tpl = svn:keywords=Id
*.thtml = svn:keywords=Id

を追記します。
これで次回から追加するファイルは自動でキーワード置換が有効になります。

参考
Subversion キーワード置換を自動で設定する方法

ホーム > タグ > svn

ぴくちゃー
ブログパーツ

ページの上部に戻る