awk メモ 1 svn 用
エリック・レイモンドの The Art Of Unix Programming には、awk なんて out of date な言語、今どき使ってるやつなんていねーよ的なことが書かれていたような記憶があるが、私は awk が好きだ。
そんな awk のメモ。今回は svn 用
svn で ? なファイルを消す
svn st | grep "^?" | awk '{ cmd = "rm -fr " $2; print cmd; system( cmd ); } END { print "\nsvn st\n"; system( "svn st" );}'
特定のファイルを、全てのリビジョンで取り出すシェルプロ
fileName=$1 svn update $fileName if [ ${#2} -ne 0 ]; then svn log --limit $2 $fileName | grep ^r[0-9] > /tmp/xx else svn log $fileName | grep ^r[0-9] > /tmp/xx fi; cat /tmp/xx | awk '{ cmd = "svn update -" $1 " '$fileName' && mv '$fileName' /tmp/'$ fileName'." $1; print cmd; system( cmd ); }' svn update $fileName
変更を全て戻す
svn st | awk '/^M/ { cmd = "svn revert " $2; gsub( /\\/, "/", cmd ); system( cmd ); }'
windows 用の svn を使っていない場合は、gsub の部分は不要。
運用上の問題によりレポジトリサーバが変わってしまったため entries の中身を無理やり変更する
find . | grep svn | grep entries | awk -f switch.awk switch.awk の中身は { cmd = "cat " $1 " | sed -e 's/古いサーバ名/新しいサーバ名/g' > /tmp/xx"; system( cmd ); cmd = "mv /tmp/xx " $1 system( cmd ); }
system() 多用しているが、まぁ便利ということで