svn:ignore
症状
svnでignoreを設定したいのです。
working-copy repository TestApp/ root/ ├ dist/ ├ branches/ ├ obj/ ├ tags/ ├ include/ └ trunk/ ├ resources/ ├ resources/ └ src/ └ src/
左側がワーキングコピーのフォルダ構成で、obj/ はコンパイルの中間ファイル、dist/ は実行形式のフォルダなのですが、リポジトリには格納する必要がないので、ignoreを設定したいのです。
対策
次のスクリプト(の断片)で、リポジトリの親フォルダ(trunk)にプロパティを設定します。「ignore」なので、リポジトリには存在しないのは当たり前ですが、存在しないフォルダ名やファイル名を設定できます*1。(add_exit_item 関数はスクリプト終了時(trap EXIT)処理です(4/19))
# ignore # # $1 ... folder name # $2 ... repository url # function svn_ignore { local folder_name="$1" local repository_url="$2" # properties text local tmp_prop=$(cygpath -u `mktemp`) add_exit_item rm -f "\"$tmp_prop\"" ${svn} propget svn:ignore "$repository_url" > "$tmp_prop" echo "$folder_name" >> "$tmp_prop" ${svn} propedit svn:ignore --editor-cmd "cp $tmp_prop" "$repository_url" } svn_ignore "dist" "file:///f:/SVN/TestApp/trunk" svn_ignore "obj" "file:///f:/SVN/TestApp/trunk" svn_ignore "include" "file:///f:/SVN/TestApp/trunk"
propeditに関しては、5/10のsvn:externals を参照してください。
TortoiseSVNで、trunkのプロパティを確認すると、次のように「dist obj include」が設定されています。
スクリプトでは、フォルダ毎ignoreしてますが、ファイルでもファイルパタンでもいけるはずです(試してないけど)。