*目次 [#t3cd46b1]
#contents

*設定 [#b6a4fb9c]

**[[./Windows]] [#qe3e57dc]

**常に無視するファイルを指定する [#e2b39c5e]
-"~/.subversion/config"で設定する。例えばXcodeのプロジェクトで無視するファイルは次のように指定する。
 global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .DS_Store *.mode1 *.mode1v3 *.pbxuser *.perspectivev3 xcuserdata project.xcworkspace build #*# .#*

※)Xcode4でxcuserdata, project.xcworkspace を追加。
*運用 [#oaa2239f]
**作業コピーのリポジトリURLを変更する [#p39d1867]
-同一リポジトリの中でパスが変わった場合svn switchを使う。例えば管理者がhttp://sample.com/tool/demoにあったdemoプロジェクトを、http://sample.com/new_tool/demoに移動した場合、次のコマンドで追随できる。
 svn switch http://sample.com/new_tool/demo
-リポジトリのホストやスキーマが変わった場合、svn switch relocateを使う。http://sample.com/tools/demoがhttp://newsample.com/tools/demoに変わった場合、次のコマンドを使用する。
 svn switch --relocate http://sample.com http://newsample.com


※TortoiseSVNを使う場合は、どちらも再配置でいける([[cl.pocari.org - Subversion で作業コピーの URL を変更する方法:http://cl.pocari.org/2007-04-08-1.html]])。[[Versions]]にはこの機能は存在しないのでコマンドラインを使うしかない。
* Tips [#md08208c]

** .svnを削除 [#j91fd95b]
[[[Subversion] .svnファイルを一括削除する:http://blog.non-style.com/2009/03/subversion-svn.html]]より、Windowsの場合、次の内容のバッチファイルを作っておき実行するのが簡単(削除したいフォルダで実行する)。
 for /R %i in (.svn) do rd /Q /S "%i"
**vendor dropの管理 [#j6f49995]
*** 参考情報 [#g3316619]
-[[ベンダブランチの管理方法:http://d.hatena.ne.jp/miau/20090906/1252246537]]

***概要 [#y8c5be32]
-サードパーティのライブラリを自分のリポジトリで管理したい場合どうすればいいのか?
-サードパーティのライブラリ自体に手をいれたりする場合自分のリポジトリで管理したいが、上流でバージョンアップしたときはその変更をとりこみたい。

***方法1: svn_load_dirs.plでまじめに追随 [#s3726a22]
-svn_load_dirs.plというスクリプトを使って、追加・削除・リネームされたファイルを教えてやるというもの。
-作業が簡単になるとはいえ、いちいちファイルがどうなったか指定しないといけないので変化がはげしい場合激しくめんどう。
-巨大ライブラリなのでは現実的ではない。

***方法2: バージョンごとにimportする [#m59aa6ff]
-リポジトリがぐんぐん増えていくが簡単。
-差分がわからないので、自分がライブラリに手を加えていた場合使えない。

***実例1: boostを管理 [#d0968f67]
-boost自体に手をいれていない場合、バージョンごとにimportするのが現実的な気がする。
-svn_load_dirs.plなんてファイルが多すぎてきっといやになる。
-リポジトリで管理すべきものかどうか考えたほうがいいかも。

**CVSから移行する [#d87b72ac]

***概要 [#i6341eb0]
-[[CVSからSVNへ移行する - Zend私的メモ:http://d.hatena.ne.jp/tach1/20101006/1286348446]] / [[Zend私的メモ:http://d.hatena.ne.jp/tach1/]]にあるように、cvs2svnを利用する。
-TracLightning付属のPython / svn環境を利用。
-cvsntだったが一応成功した模様。

***手順 [#s7bad326]
-http://cvs2svn.tigris.org/svn/cvs2svn/trunkから最新版svnを取得(ユーザーはguest)。
-cvs2svnを実行。コマンドオプションは[[cvs2svn: cvs2svn Documentation:http://cvs2svn.tigris.org/cvs2svn.html]]を参考にしたほうがよい。
#pre{{
% python cvs2svn --encoding=cp932 -s d:\temp\svnrepo d:\temp\cvsrepo

}}

*トラブルシューティング [#udb0d33a]
**ログファイルを変更できない [#m6683732]
-リポジトリのhooksディレクトリにpre-revprop-changeというシェルスクリプトを置かないといけない。実行権限も必要(Windowsの場合はpre-revprop-change.batというバッチファイル)。
-pre-revprop-change.tmplをコピーして作る。
#pre{{
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
}}
-ログを編集するユーザーを限定したり、変更できるプロパティを限定したりするためにこのスクリプトをhookしている模様。

** フォルダを作成しようとすると"405 Method Not Allowd"と表示される。 [#xa6811b3]
-フォルダを作成しようとすると次のエラーメッセージが表示される。
 サーバーが、リクエストへのレスポンスとして予想外の戻り値(405 Method Not Allowd)を送信してきました(リクエスト: MKCOL,
-作成しようとしているフォルダがすでにリポジトリに存在していないか、または日本語フォルダ名など使用できない文字を含んだフォルダを作成しようとしていないか確認する。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS