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 @
終わり.