SVN-更新中のチェックサムの不一致


122

Subversionからいくつかのファイルを更新しようとすると、エラーが発生します。

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

なぜこれを取得するのですか?どうすれば修正できますか?

回答:


70

これを修正する最も簡単な方法(変更が少ない場合)は、変更を別のディレクトリにコピーし、プロジェクトがチェックアウトされているディレクトリを削除して、プロジェクトを再度チェックアウトすることです。

次に、変更をコピーして戻し(.svnフォルダーはコピーしないでください)、コミットして続行します。


9
問題のあるフォルダを削除し、プロジェクト全体を更新しました。今では大丈夫そうです。
Koralek M.

+1私が見つけたもう1つの代替案は、svnデータベースをハッキングすることをはるかに容易にしました
SeanDowney

@SeanDowneyその方法は?
arvindwill 2013

@arvindwill申し訳ありませんが、コメントではあまり明確ではありませんでした。この方法の方がはるかに簡単です。ここで怖いの代替がある:maymay.net/blog/2008/06/17/...
SeanDowney

2
これは特定の修正ではありません。いつでもローカルデータをすべて削除して、リポジトリから新しいコピーを作成できます。
tim

197

SVN 1.7以降を使用している場合は、ここで説明する回避策があります

要約すると:

  1. 問題の原因となっているファイルがあるフォルダに移動します
  2. コマンドを実行しsvn update --set-depth emptyます(注:これによりファイルが削除されるため、まずコピーを作成してください!)
  3. コマンドを実行する svn update --set-depth infinity

17
これは私にとってはうまくいきましたが、「svn update --set-depth empty」はそのパスからすべてを削除するため、まずコピーを作成してください
tristanbailey

3
これは、離れた場所にある巨大なリポジトリを修正するのに最適です。新しいチェックアウトを行うことはうまくいきましたが、1時間以上かかりました。これには数分かかりました。
Brian Gillespie

こんにちは私はsvnクライアントとしてwindowとtortoisesvnを使用しています..私はあなたの解決策を試しましたが、それでも問題を示しています
Amit Bera

.svnディレクトリを新しいリポジトリから古いリポジトリに置き換えただけで動作しました:)
harishkumar329

これは私にとってはうまくいきました、ありがとう!ポイント1は、問題を引き起こしている実際のフォルダー(またはファイル)にドリルダウンすることです。その後、多くを更新する必要はありません。Tortoiseの "更新先->このアイテムのみ"を使用し、次に "更新先->完全に再帰的"を使用してすべて戻すために、数十のファイルを含むフォルダーがありました。それでも、これはそのフォルダ内のファイルを削除することに注意してください!何ギガバイトものリポジトリと、全体的に細かく調整された--set-depthsを持つ低速のVPNリンクでは、「標準」のソリューションは単に役に立たなかった。
ダッシュトムバン

6

私は同様の問題を抱えていました。主なプロバイダーは、アンチウイルス「FortiClient」(アンチウイルス+ VPNクライアント)でした。無効にしたとき-すべての更新/チェックアウトが正しく行われた


1
これが私の問題を解決した唯一の答えです。私はこれについて決して考えられなかった。ありがとう!
timeon

5

この問題を解決する簡単な方法を見つけました。これをEclipseから直接実行することはできません。手順:

  1. Windowsのワークスペースフォルダー構造に移動する
  2. フォルダの名前を変更する
  3. 日食でリフレッシュ
  4. これで、フォルダーとファイルはEclipseでプロジェクトから削除され、名前が変更された新しいフォルダーの下に表示されます
  5. 次に、「リポジトリと同期」オプションを試してください。

これにより、.svnfolder内のテキストベースフォルダーが復元されます。更新エラー中のチェックサムの不一致はこれ以上表示されません。


1

これは、Eclipseプラグインを使用して同期しているときに起こりました。問題の原因となったファイルには、ローカルでの変更はありませんでした(実際、前回の更新以降、リモートでの変更はありません)。私はファイルに対して「元に戻す」を選択しましたが、ファイルに他の変更を加えることなく、通常の状態に戻りました。


1

同じエラーが1つのファイルで発生しました。IntelliJ IDEAでは、ファイルのコピーを作成し、プロジェクトに移動して問題のファイルを削除し、正常にコミットすることができました。次に、同じ名前の新しいファイルを作成し、内容をコピーしてファイルに戻しました。あなたは改訂履歴を失うと思いますが、それはうまくいきます。


1

同僚と協力している場合:

1)問題の原因となっているファイルの名前を変更するように依頼し、 commit

2)あなたupdate(今、別の名前の無効なチェックサムを持つファイルが表示されます)

3)名前を元の名前に戻します

4)commit(そして、同僚にupdateファイル名を初期状態に戻すよう依頼してください)

これで問題は解決しました。


1

私は非常に素晴らしいソリューション、見つけ解決しよう私の問題を。コツは、svn DB(wc.db)を編集することです。

解決策はこのページで説明されています:http : //www.exchangeconcept.com/2015/01/svn-e155037-previous-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

リンクがダウンしている場合は、次の手順を実行してください。 ここに画像の説明を入力してください

http://sqlitebrowser.org/の sqliteツールを使用しました。


1

私はTortoise SVNを使用していますが、このページのすべてのソリューションを試してみましたが、機能しませんでした。

最後に問題のファイルをバックアップします。そして、使用は、Repo Browserローカルフォルダ内のファイルが削除されるように、ローカルフォルダを更新し、その中に問題のあるファイルを削除します。次に、バックアップファイルをコピーしてから、Add > Commit正常に更新できます。

この方法の唯一の欠点は、このファイルの履歴が削除されることです。


0

これを解決するには、次の手順に従います。

  1. エラーが発生している.svnディレクトリにあるエントリファイルを開きます。
  2. エラーが発生しているファイルのエントリを見つけ、期待値をエラーの実際の値に置き換えます。
  3. 次に同期して、更新を試みます。

それでも動作しない場合。これらを試してください。ただし、その回避策は次のとおりです。

  1. システムからファイルを削除します。
  2. エントリファイルからファイルのエントリを削除します。(ファイル名から特殊文字まで)。
  3. 次に、ファイルを同期して更新します。

これにより、リポジトリから最新バージョンのファイルが取得され、すべての競合が解決されます。


0

サーバーで同様の問題がありましたが、SVNディレクトリが非常に大きく、削除して再同期したくなかったため、ファイルのコピーをローカルに作成してから削除しました。更新が成功し、ファイルが追加されたとき。


0

ファイルを削除して、.svnディレクトリの下のファイルエントリからファイル参照を削除してください


0

私は同様のエラーがあり、次のように修正しました:

(私の「修正」は、subversionが内部でどのように動作するかについてはあまり知らないので、正しい場合と正しくない場合があるという仮定に基づいていますが、間違いなく私にとってはうまくいきました)

.svn \ text-base \ import.php.svn-baseが最新のコミットと一致することが期待されていると想定しています。

エラーが発生したファイルを確認したところ、ベースファイルがリポジトリ内の最新のコミットと一致しませんでした。

私は最新のコミットからテキストをコピーして.svnフォルダーに保存し、誤ったファイルを置き換えました(想定が間違っていた場合に備えてバックアップコピーを作成しました)。(ファイルは読み取り専用とマークされていました、そのフラグをクリアし、上書きして読み取り専用に戻しました)

その後、正常にコミットすることができました。


0

私の解決策は:

  1. ファイルシステムからSVNクリーンアップを実行する
  2. 別のブランチに切り替える
  3. 衝突を解決する
  4. 「問題のある」ブランチに切り替えます
  5. Spring Tool Suiteからクリーンアップを実行する
  6. プロジェクトの更新を実行する

0

1.'reversion to reversion 'はディレクトリ下の'このアイテムのみ 'をチェック2.updateは'完全再帰的 'を再度チェック

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.