2

添加新文件后尝试提交到 cvs 分支时出现此错误

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

知道如何解决它,以便我可以检查我的代码吗?
服务器和客户端都是 Linux,并且涉及到预提交。

4

4 回答 4

2

睡眠者写道:

不确定问题是什么,但我通过进入服务器并删除存储库中的文件 Attic/newfile.v 并再次添加它来解决它。

“阁楼”是 CVS 中删除文件所在的位置。在过去的某个时候,有人签入了 newfile.v,后来它被删除了,因此搬到了阁楼。

通过从存储库中删除 ,v 文件,您损坏了包含文件“newfile”的旧提交。不要这样做。

正确的方法是恢复被删除的文件,然后用新文件替换它的内容。

根据http://www.cs.indiana.edu/~machrist/notes/cvs.html

要恢复已从存储库中删除的文件,您基本上需要将该文件更新到其最新修订号(在实际删除之前)。例如:

cvs update -r 1.7 已删除文件

这将在您的工作存储库中恢复 deleted_file。要查找已删除的文件及其最新修订号,请在命令提示符下发出 cvs log。

编辑回复评论以解释阁楼中的 ,v 文件的含义。

于 2008-09-16T10:01:47.047 回答
1

您是否在 Windows 上,您是否将文件重命名为具有不同大小写的相同名称(例如 MAKEFILE vs Makefile vs makefile)?CVS 曾经遇到过这个问题(也许现在仍然存在?):

OSDir/mailarchive -主题:回复:hash.c.312:findnode:

马努写道:

我尝试在我的 cvs 树中将“makefile”重命名为“Makefile”,然后:

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

CVS 从来没有被设计用来处理不区分大小写的文件系统。它已被修补到它主要工作的地步,但仍有一些地方不能工作。这是其中之一。

您可能还想阅读线程中的其余消息。

于 2008-09-16T09:07:59.160 回答
0

不确定问题是什么,但我通过进入服务器并删除存储库中的文件 Attic/newfile.v 并再次添加它来解决它。

于 2008-09-16T09:30:19.277 回答
0

也许对您的存储库有某种预提交检查,请参见此处

于 2008-09-16T08:44:25.487 回答