とりあえず(チェックアウトを一からやり直しせずに)単純なコマンド実行により解決しました。これが適切かどうかは不明で、たまたま偶然解決したに過ぎません。
結果的には修復された様子ですので、内容を挙げておきます。適切な方法をお分かりの方がおられたら、引き続きよろしくお願いします。
1. 概略
1.1. checksum 値からの対象ファイルの識別
1.2. 対象ファイルを revision 0 でアップデート
1.3. 対象ファイルを最新でアップデート
2. 詳細
2.1. checksum 値からの対象ファイルの識別
以下のサイトに、svnに関するスクリプトを見つけました:
https://gist.github.com/mcbrwr/4e04cee615bd954476cd
text
1cat > svn-pristine-find.sh << "EOF"
2#!/bin/bash
3# for an "svn pristine text not present" error like this:
4# svn: E155010: Pristine text 'd6612ee6af5d9fb4459cbe7e2e8e18f7fb4201f8' not present
5# you can delete the file and retrieve it with svn up
6# (if you have local modifications, make up your own plan)
7# -
8# Run this script from the root of the working copy.
9# It retrieves the file that's causing the error from wc.db
10# usage example : ./svn-pristine-find.sh d6612ee6af5d9fb4459cbe7e2e8e18f7fb4201f8
11
12SHA1="$1"
13set -e
14
15FILE=$(sqlite3 .svn/wc.db 'select local_relpath from nodes where checksum="$sha1$'$SHA1'"')
16
17echo "File causing trouble is: $FILE";
18EOF
上記は「svn pristine text not present」というエラーへの対処用なのですが、本質問に極似しており、少なくともエラーメッセージに示された checksum 値を使って、エラー対象ファイルが識別できます。そこで本スクリプトを実行しました。エラー発生対象のファイル(下記では仮に XXXXX.txt とする)がこれにより特定できました。
shell
1$ svn-pristine-find.sh d5632e50d49813e25f709d548928e79b5ef412ed
2File causing trouble is: XXXXX.txt
2.2. 対象ファイルを revision 0 でアップデート
対象ファイルを revision 0 でアップデートすることにしました。
shell
1$ svn up -r0 XXXXX.txt
2Updating 'XXXXX.txt':
3D XXXXX.txt
4リビジョン 0 に更新しました。
この svn リポジトリでは、リビジョン 0 において XXXXX.txt は存在していないようで、これにより XXXXX.txt が削除されることになりました。この次の手順でうまくいったことを、振りかって考えてみると、ここでの処理は「svn rm XXXXX.txt
」でもよかったのかもしれません。
2.3. 対象ファイルを最新でアップデート
最新リビジョンをアップデートします。
shell
1$ svn up
2Updating '.':
3A XXXXX.txt
4リビジョン 334455 に更新しました。
svn up
しても、もうエラーは発生しなくなりました。
以上です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。