47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

svn: warning: W155010: Pristine text 'xxx' not present への対処方法

もう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.

私が遭遇した時には、これで問題が解消されました。バックアップしておいたファイルとも比較しましたが同じものでした。 大量にファイルを更新した時に起こりやすい感じもしますが、変更していないファイルに問題が起きるのがよくわからないなあ。