もう4月も最終日、今日はとてもよい陽気です。体調はまずまずです。
さて、svnを使っていると、以下のような問題が起きました。実はこの問題は、以前にも起きていて、その時も修正方法を探して対処しました。二度あることは三度あるという訳で、対処方法をメモしておきます。
問題点
以下のようなメッセージが表示され、svn commitが失敗する。svn statusでも同じメッセージが表示される。
svn: warning: W155010: Pristine text 'a5886e5ceb8e05c0ee82d491f23e6c32a7d94565' not present
対処方法
内容的には表示されているハッシュ値に対応するファイルの情報が見つからないというようなものだと思います。
対処としてはハッシュ値に対応するファイルを見つけて、何とかするということになります。
svn-pristine-find.sh を入手
ハッシュ値に対応するファイルを見つけるコマンドが、githubにありますので、ダウンロードします。 gist.github.com
svn-prestine-find.shを実行して問題のファイルを見つける
svn checkoutを行った(.svnが存在する)ディレクトリに移動し、ハッシュを指定してsvn-prestine-find.shを実行します。
$ svn-pristine-find.sh a5886e5ceb8e05c0ee82d491f23e6c32a7d94565 File causing trouble is: vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/locale/fr/functions
すると、問題が起きているファイルが表示されます。
問題のファイルを移動する
ファイルの内容を変更していなければ不要ですが、念のためバックアップしておきます。
$ mv vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/locale/fr/functions /tmp
svn upを実行して復元する
$ svn up vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/locale/fr/functions Updating 'vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/locale/fr/functions': Restored 'vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/locale/fr/functions' At revision 15107.
私が遭遇した時には、これで問題が解消されました。バックアップしておいたファイルとも比較しましたが同じものでした。 大量にファイルを更新した時に起こりやすい感じもしますが、変更していないファイルに問題が起きるのがよくわからないなあ。