2011-01-04 40 views
16

これは1週間私を悩ませています。SVN Endless Loop - [ファイル] "リポジトリに存在しません"

SVNは特定のファイル "does not exist in repository"を教えてくれます。

Fine。それを削除しましょう。気にしないで。それを無視します。なんでも。私はこのファイルについては特に気にしません(特に夜間のチェックインが失敗した場合)。

最も奇妙な部分は? "復元"は、実際にリポジトリからファイルを復元するので、そのファイルが破損している可能性があります。

...これはケーキのアイシングでなければなりません。 Windowsエクスプローラでファイルを削除すると、SVNはリポジトリからファイルを復元し、その状態の直後にリポジトリにファイルが存在しません。 WTF?

誰かがこれを取り除く方法を手がかりにしていますか?

私はすでにクリーンアップ、リバーシション、削除など想像できるものを試していますが、これは私に困惑しています。

あなたが持つかもしれない任意のヒントをありがとう...

+0

の名前を変更し

  • 再び
  • 削除(またはバックアップ)古い作業コピーを新しい作業コピーをコミット'そのファイル( '^'を削除する)?そして、コミットしてから、削除して(やり直す)? – VonC

  • 答えて

    17

    それは例えば、あなたがあなたのローカル作業コピーを破損している可能性が最も高いと思われますWindowsエクスプローラで行ったフォルダやその他の操作を移動して、TortoiseSVNのコンテキストメニューを使って行ってください。 .svnフォルダ内の情報は、作業コピーの状態と一致しなくなりました。これはSubversionを混乱させます。

    これを修正するには、作業コピーの親フォルダ( "オリジナル")をWindowsエクスプローラ(TortoiseSVNではなく)で削除します。その後、TortoiseSVNを作業コピーのルートで「更新」します。これにより、フォルダが正常に復元されます。

    もう1つの方法は、作業コピーを完全に破棄して新しくチェックアウトすることです。

    Subversion(1.7)の次回のリリースでは、すべてのメタデータをルートの単一の.svnフォルダに集中させることで、作業コピーが破損する可能性が減ります。

    +1

    これは一般的な状況であることが確認できます。作業コピーは壊れてしまいますが(まだ一貫性を保っています)、見つけ出す方法はありません。唯一の信頼できる解決方法は、フレッシュチェックアウトです。 –

    +0

    こんにちはウィム - あなたの最初の提案はトリックでした。ありがとう!ああ、これについていくつかのことを最小化しようとする1.7についての素晴らしいニュースです。 SVN 1.6は軽微な間違いをあまりにもあまりにも容赦しています。 – Flipster

    +0

    別の方法があると思います...囲みフォルダを削除することは私の選択肢ではありません:( – jowie

    0

    壊れた作業コピーでも同様の問題が発生しました。作業コピーには保留中の変更がたくさんありますが、チェックインできないことがあります。問題のあるファイルがある場合は削除し、

    1. チェックアウト新鮮な作業コピーの新しいディレクトリ(パス2)
    2. に新鮮な作業コピーでこれを解決するために、私は(SVN 1.7以降)は、次のアプローチを使用しますそれは必要ならばそれ。
    3. コピーし
    4. の.svnディレクトリ以外のすべてを削除し、新鮮な作業コピーでは.svnディレクトリを除いて、古い作業コピーからの新鮮な作業コピーにすべてを新鮮な作業コピー
    5. をコミットします。
    6. あなたはSVNリネーム `にしようとしたのに古い作業コピーに新しい作業(パスにパス2)
    関連する問題