質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Subversion

Subversionは、使い方はCVSによく似た、CVS(Concurrent Versions System)を改良したバージョン管理ツールです。

Q&A

解決済

1回答

12907閲覧

svn: E155032: The pristine text with checksum 'XXX...' was not found

matsuand

総合スコア186

Subversion

Subversionは、使い方はCVSによく似た、CVS(Concurrent Versions System)を改良したバージョン管理ツールです。

1グッド

0クリップ

投稿2018/09/10 02:27

Subversion update 時のエラーです。ご教示よろしくお願いします。

長い期間 svn up をし続けているサイトより、いつものように svn up を行うと、以下のようなエラーが発生するようになりました:

shell

1$ svn up 2Updating '.': 3svn: E155032: The pristine text with checksum 'd5632e50d49813e25f709d548928e79b5ef412ed' was not found

一からチェックアウトし直しというのが、確実に復旧できる方法かと想像しますが、そこまではやっていません。ファイル数も相当なボリュームがあるため、あまりやりたくありません。むしろ subversion の仕組みを少しでも理解するきっかけとなればと思い、対処方法を知りたいという気もあります。

どう対処するのが適切でしょうか? チェックアウトし直ししか道がないなら諦めます。助言ありましたら、よろしくお願いします。

tatamyiwathy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

とりあえず(チェックアウトを一からやり直しせずに)単純なコマンド実行により解決しました。これが適切かどうかは不明で、たまたま偶然解決したに過ぎません。

結果的には修復された様子ですので、内容を挙げておきます。適切な方法をお分かりの方がおられたら、引き続きよろしくお願いします。

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 しても、もうエラーは発生しなくなりました。

以上です。

投稿2018/09/10 06:28

編集2018/09/10 06:43
matsuand

総合スコア186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問