Subversionでファイルのロックを一括解除する

前提

  • 全てのロックを解除して良いと認識している
  • LANG=ja_JP.UTF-8 である
  • /var/svn/repoリポジトリがある
  • root 権限を持つ

実行

実際に使用する際には /var/svn/repo を適時読み替える. LANG=C の場合は grep "パス"grep "Path" にすれば 多分うまくいく.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @" | bash

説明

ロックされているファイルの一覧を取得

svnadmin lslocks /var/svn/repo

その中のパスが書かれている行を取得

svnadmin lslocks /var/svn/repo | grep "パス"

先頭からコロンまでの文字を削除すると実際のパスが取れる.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g"

xargs の -I オプションを使って svnadmin rmlocks に削除したいファイルのパスを渡す.

echoを一度挟むのはうっかりがあるかもしれないから.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @"

出力を見て,大丈夫そうだったら bash に投げてロックを解除する.

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ echo "svnadmin rmlocks /var/svn/repo @" | bash

ちなみに,確認とかいらないよ.って時はこっち

svnadmin lslocks /var/svn/repo | grep "パス" | sed "s/^[^:]*://g" | xargs -I@ svnadmin rmlocks /var/svn/repo @

終わり.