失敗談。
Windowsで運用中のMercurialのリポジトリバックアップにrobocopyコマンドを/MOTオプションを付けて実行してました。はい、定期的に変更点を見つけて宛先を最新にし続けるというあのオプションです。そんな運用する奴いねぇよというツッコミはスルーの方向で。
はじめは短期間の運用だったはずなのですが、あれよあれよと数カ月経過。robocopyを終了し複製の方のリポジトリを使おうとすると、コミットが終わらない!?
原因はMercurialが排他制御に使う.hg/store/lockファイル。リポジトリが更新中の時だけ作成されその後消えるのですが、たまたまrobocopyがそれを見つけて宛先にコピー。宛先にはそれが残り続けたため、複製にコミットしようとしたMercurialはlockファイルが消えるのを延々待っていたと。
robocopyには/PURGEオプションを付けましょう。これでも短時間複製リポジトリにlockファイルが存在する可能性はありますが、激減するはず。
Comments