2

新しいファイルを追加した後にcvsブランチにコミットしようとすると、このエラーが発生します

Assertion failed: key != NULL, file hash.c, line 317

コードをチェックインできるように修正する方法はありますか?
サーバーとクライアントはどちらもLinuxであり、事前コミットが含まれます。

4

4 に答える 4

2

sleep-erは次のように書いています。

問題が何であるかはわかりませんが、サーバーに移動し、リポジトリ内のファイルAttic / newfile.vを削除して、再度追加することで解決しました。

「屋根裏部屋」は、削除されたファイルがCVSに入る場所です。過去のある時点で、誰かがnewfile.vをチェックインし、その後のある時点でそれが削除されたため、屋根裏部屋に移動しました。

リポジトリから.vファイルを削除することにより、ファイル「newfile」を含む古いコミットが破損しました。こんなことしないで。

正しい方法は、削除されたファイルを復元してから、その内容を新しいファイルに置き換えることです。

http://www.cs.indiana.edu/~machrist/notes/cvs.htmlによると

リポジトリから削除されたファイルを回復するには、基本的に、そのファイルを最後のリビジョン番号(実際に削除される前)に更新する必要があります。例えば:

cvs update -r 1.7deleted_file

これにより、作業リポジトリ内のdeleted_fileが回復されます。削除されたファイルとその最後のリビジョン番号を見つけるには、コマンドプロンプトでcvslogを発行します。

屋根裏部屋の、vファイルが何を意味するかを説明するためにコメントへの返信で編集されました。

于 2008-09-16T10:01:47.047 に答える
1

Windows を使用していて、ファイルの名前を大文字と小文字が異なる同じ名前に変更しましたか (MAKEFILE と Makefile と Makefile など)。CVS はこれに問題を抱えていました (今でもそうかもしれません?):

OSDir/mailarchive -件名: Re: hash.c.312: findnode:

マヌーは次のように書いています。

CVS ツリーで「makefile」の名前を「Makefile」に変更しようとすると、次のようになります。

cvs: hash.c:312: findnode: Assertion `key != ((void *)0)' failed.
cvs [server aborted]: received abort signal

CVS は、大文字と小文字を区別しないファイル システムに対応するようには設計されていません。パッチを当ててほぼ動作するようになりましたが、まだ動作しない箇所がいくつかあります。これはそれらの1つです。

スレッド内の残りのメッセージも読みたいと思うかもしれません。

于 2008-09-16T09:07:59.160 に答える
0

おそらく、リポジトリに何らかの事前コミット チェックが行われている可能性があります。ここを参照してください。

于 2008-09-16T08:44:25.487 に答える
0

問題が何であるかはわかりませんが、サーバーにアクセスしてリポジトリ内のファイル Attic/newfile.v を削除し、再度追加することで解決しました。

于 2008-09-16T09:30:19.277 に答える