2016年5月2日月曜日

SVN commitが失敗したうえにCleanupに失敗したときの対処

※WindowsPCで処理をしていた時の出来事です。

現象

SVN対象のフォルダに大きめのzipを作っているさなかにSVN COMMITをしてしまい、
SVN COMMIT対象としてzipの一時ファイルが認識されてしまいました。
COMMIT前にzipファイルへと置き換わってしまったため、
SVNとしては「COMMITしようとしたファイルがない」と怒ります。(当然です)

試したこと

クリーンアップをしろということで以下を試してもダメ。
・tortoirseSVNからクリーンアップ(当該フォルダ)
・tortoirseSVNからクリーンアップ(ルートのフォルダ)
・ルートフォルダをコマンドプロンプトで開き「svn cleanup」

ちなみに、コマンドプロンプトから実行したときの応答が以下
svn: E155009: Failed to run the WC DB work queue associated with 'D:\Project\dev', work item 76284 (file-commit trunk/sub1/sub2/sub3/zia09324) svn: E720002: Can't set file 'D:\Project\dev\trunk\sub1\sub2\sub3\zia09324' read-write: 指定されたファイルが見つかりません。
えぇ、zipに変わってしまいましたとも。すみません。

処置

多少無理やりかもしれませんが、上記の「見つからないファイル」⇒ここでいうところの「zia09324のファイル」を対象のフォルダに作成したうえで、ルートフォルダから svn cleanup を行うことで現象を解消することができました。
作成するファイルは何でも大丈夫です。(私はゼロバイトファイルを作りました)

追伸

原因究明のためにリポジトリブラウザから対象のフォルダがどうなっているかをのぞいてみたのですが、zip09324というファイルはありました。
作ったファイルを削除、コミットすることでリポジトリからも削除することができました。

まとめ

・コミットするときはファイル操作やめましょう。
・もし失敗したら、リポジトリ側とファイル構成を合わせてからクリーンアップしましょう。
・コマンドプロンプトからのSVN操作は細かいことも教えてくれるので役に立ちます。

0 件のコメント: