3

Apache Subversionリポジトリで問題が発生しましたが、最適な解決策を探しています。

Subversionリポジトリにコミットできず、エラーが発生します:

svn:E720002:コミットに失敗しました(詳細は次のとおりです):svn:E720002:ファイルを開くことができません'C:\ Repository \ myproject \ db \ txn-current':システムは指定されたファイルを見つけることができません。

空のtxn-currentファイルを作成すると、コミット時に別のエラーが発生します。

svn:E070014:コミットに失敗しました(詳細は次のとおりです):svn:E070014:ファイルを読み取れません'C:\ Repository \ myproject \ db \ txn-current':ファイルの終わりが見つかりました

注:リポジトリのバックアップがないため、手動で問題を修正する必要があると想像してみてください。

同じ動作がStackOverflowですでに説明されています:svn commit問題、「d:\ UC \ db \ txn-current」を読み取れません:ファイルの終わりが見つかりました。しかし、そこにある答えが本当に役立つとは思えません。

  • \db\txn-current手動で作成して0そこ(または他の整数)を配置することは良い解決策ではないと思います。近い将来、予期しない動作が発生する可能性があると思いますが、

  • svnadmin recoverおよび/またはsvnadmin verify作成および/または入力しないでくださいtxn-current。この場合、これらのコマンドは無力です。

FSFS記述 ファイルによると\db\txn-current、次のトランザクションキー番号が含まれています。ファイルに整数を入れると、コミットでき、整数が1ずつ増えます。

ただし、無関係な整数を入力すると、レポで何かが壊れる可能性があるため、これが発生することは望ましくありません。

「txn-current」ファイルは、36進数のみを含む1行のテキストを含むファイルです。現在の値は、トランザクションのベースとなるリビジョン番号とともに、次のトランザクション名で使用されます。このシーケンス番号により、トランザクションが中止され、同じリビジョンに基づく新しいトランザクションが開始された場合でも、トランザクション名が再利用されないことが保証されます。FSFSがこのファイルに対して実行する唯一の操作は、「取得および増分」です。この操作中、「txn-current-lock」ファイルはロックされます。

\db\txn-current問題を適切に修正するにはどうすればよいですか?ファイルにはどの整数を入れる必要がありますか?これを解決する他の方法はありますか?

編集:

  • db/current同じ問題(存在しないか空の場合)をファイルで解決するにはどうすればよいですか?
4

6 に答える 6

5

私も同様の問題を抱えていました。解決するために、「txn-current」ファイルを編集し、その中にxxxxxなどの大きな数値を入れました。それとともに、「db\transactions」フォルダにある「current」という名前の別のファイルを編集する必要がありました。このファイルからすべてのコンテンツを削除し、Enterキーを1つ追加して、このファイルを閉じました。

于 2013-02-14T12:53:08.177 に答える
3

FSFSではtxn-current次のトランザクションIDを保持します。コミット後にリビジョン自体に保存されたトランザクションID。ですから、パットインの本当に大きな数はtxn-current問題ないはずです。

別の解決策は、svnadmin dumpリポジトリを作成しsvnadmin loadてから、新しいリポジトリを作成することです。

更新:ファイルの破損に関する問題txn-currentが調査され、r1483781で修正されました。

  • Windowsでの電源/ディスク障害時のリポジトリの破損を修正(r1483781)

修正はSubversion1.7.10以降で利用可能です。

于 2012-10-23T18:07:02.773 に答える
3

「'D:\ SVNROOT \ UC \ db \ txn-current'を読み取れません。:ファイルの終わりが見つかりました」というエラーが表示されました。さらに詳しく調べると、サーバーOSの後でdbフォルダー内の「現在の」ファイルが空であることがわかりました。アップグレードアクティビティ。revsフォルダから最新のリビジョン番号を見つけ、その番号を「現在の」ファイルに追加しました

それでも機能しなかったので、リビジョン番号を入力してから「入力」する必要があることを指定するこの記事を見つけました

これはエラーを解決するために機能します!

于 2013-04-24T10:01:52.830 に答える
3

同様の問題が発生し、コミット中に電源障害が発生しました。「現在の」ファイルを変更しようとしましたが、機能しませんでした。

リポジトリのバックアップを作成してから、「現在の」ファイルを削除し、リポジトリで「svnadminverify」を実行しました。その後、次のエラーが発生しました。

「不正な形式のファイルsvn:シリアル化されたハッシュにターミネータがありません」

次に、リポジトリのダンプを実行し、古いリポジトリを削除し、リポジトリを再作成して、ダンプファイルをインポートしました。

その後、すべてが再びうまくいきました。完全なリポジトリと履歴はまだ残っていました。

于 2013-08-07T11:04:01.180 に答える
1

やった:

svnadmin verify /mnt/repos/
svnadmin recover /mnt/repos/

まだエラーが発生しました...

svn: E000002: Übertragen schlug fehl (Details folgen):
svn: E000002: Kann Datei »/mnt/repos/db/txn-current« nicht öffnen: Datei oder Verzeichnis nicht gefunden

それから私は空のファイルを作成しました:/mnt/repos/db/txn-current それからsvn ci再び働きました

待ちたくない場合:

svnadmin verify -r 997:HEAD <path>

より高速です。997を、不良リビジョンよりも小さいリビジョン番号と交換します

于 2018-01-14T23:05:01.257 に答える
0

私の場合。SVNがセットアップされたVirtualMachine、スペースがいっぱいでした。だからスペースを片付けた

于 2019-07-15T11:39:21.467 に答える