目次

関連ページ

参考情報

設定

常に無視するファイルを指定する

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

※)Xcode4でxcuserdata, project.xcworkspace を追加。

運用

作業コピーのリポジトリURLを変更する

  • 同一リポジトリの中でパスが変わった場合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/demohttp://newsample.com/tools/demoに変わった場合、次のコマンドを使用する。
    svn switch --relocate http://sample.com http://newsample.com

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

リポジトリ構成

  • http://localhost:8080/repos/sample/trunk、branches、tagsと構成する例が多い。
  • しかし実際は、sample/trunk/sample、のようにtrunkの下にプロジェクト名のフォルダを作ったほうがチェックアウト時にめんどくさくない。
  • ブランチの場合は、branches/rel_1_2/sampleのように、途中のフォルダ名でブランチを区別する。

Tips

.svnを削除(Windows)

.svnを削除(Mac)

  • - profaim.jpより。
    find . -name ".svn" -type d -exec echo delete {} ";" -exec rm -rf {} ";"

vendor dropの管理

参考情報

概要

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

方法1: svn_load_dirs.plでまじめに追随

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

方法2: バージョンごとにimportする

  • リポジトリがぐんぐん増えていくが簡単。
  • 差分がわからないので、自分がライブラリに手を加えていた場合使えない。
  • と思っていたらAn opinion on...: Subversion Vendor Branches Howtoのようにやればよいのかな。

実例1: boostを管理

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

CVSから移行する

概要

手順

リポジトリから不要ファイルを削除する

  • まずリポジトリをdumpしておく
    # svnadmin dump <リポジトリパス> > dump20120206
  • dump20120206ファイルを見て、Node-pathを確認し、削除するファイルのパスを調べる。特に頭にスラッシュがつくかどうかが重要らしい。
    # svndumpfilter exclude '削除するパス' < dump20120206 > dump20120206_filter
  • うまくいくと Dropped…というメッセージが表示されるはず。
  • 新しいリポジトリを作成しロードしなおす(古いリポジトリを使う場合リネームしておく)。
    # svnadmin create <新規リポジトリ>
    # svnadmin load <新規リポジトリ> < dump20120206_filter
    

Excelファイルを管理する

トラブルシューティング

ログファイルを変更できない

  • リポジトリのhooksディレクトリにpre-revprop-changeというシェルスクリプトを置かないといけない。実行権限も必要(Windowsの場合はpre-revprop-change.batというバッチファイル)。
  • pre-revprop-change.tmplをコピーして作る。
    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"と表示される。

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

巨大リポジトリをチェックアウトしようとすると途中で止まる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-18 (土) 20:31:09