複数のSubversionレポジトリたちを upgrade

Subversion 1.7 では,Git風の「トップディレクトリのみに .svn/ を置く」というスタイル (WC-NG) に変更された.さらに中身は以前のPascal文字列風KVペアからSQLiteになったようだ.

いやSVNに期待されているのはそういうことではないと思うんだが... 前方互換を崩すほどのことか!?
ともあれ.1.6 でチェックアウトしたワーキング・コピーを 1.7 で使うには, svn upgrade と打って変換をかける必要がある.ところがChromium browserの自前ビルドなど,多数のSVNワーキング・コピーをツール (depot_toolsgclient) で自動チェックアウトした環境ではこれは辛い.ということでBashにループさせる.

while ((1)); do
    x=`find . -type f -name all-wcprops | head -1`
    if [ -f "$x" ]; then
        d=${x%/*}
        d=${d%/*}
        ( cd $d; svn upgrade )
    else
        break
    fi
done

1.6 の .svn/ ディレクトリの識別に,旧式のKVペア・データファイルである .svn/all-wcprops を使った.なお ${x%/*}dirname $x と等価なはず(bash(1) → "Parameter Expansion").プロセス呼び出しコストが怖くて... 貧乏性ですんません.
svn upgrade が終わるたびに find(1)ディレクトリ・ツリーを最初から舐めてるが,これくらいの非効率は許してほしい.find(1) の出力で列挙される .svn/all-wcprops のうち,一回の svn upgrade でいくつがカバーされるか分からないのでね.