在添加新文件后尝试提交cvs分支时,我收到此错误
Assertion failed: key != NULL, file hash.c, line 317
任何想法如何解决它,以便我可以检查我的代码?
服务器和客户端都是Linux,并且涉及预提交。
答案 0 :(得分:2)
睡觉的人写道:不确定问题是什么,但我通过进入服务器并删除存储库中的文件Attic / newfile.v并再次添加它来解决它。
“Attic”是删除文件进入CVS的地方。在过去的某个时刻,有人检查了newfile.v,稍后它被删除了,因此被移到阁楼。
通过从存储库中删除v文件,您损坏了包含文件“newfile”的旧提交。不要这样做。
正确的方法是恢复已删除的文件,然后用新文件替换其内容。
根据http://www.cs.indiana.edu/~machrist/notes/cvs.html
要恢复已从存储库中删除的文件,您基本上需要将该文件更新为其上一个修订版号(在实际删除之前)。例如:
cvs update -r 1.7 deleted_file
这将恢复工作存储库中的deleted_file。要查找已删除的文件及其上次修订版号,请在命令提示符下发出cvs log。
编辑回复评论,解释Attic意味着什么,v文件。
答案 1 :(得分:1)
您是否在Windows上并且使用不同的案例将文件重命名为相同的名称(例如MAKEFILE vs Makefile vs makefile)? CVS曾经遇到过这个问题(可能还有吗?):
OSDir / mailarchive - Subject: Re: hash.c.312: findnode:
Manu写道:
我尝试在我的cvs树中将“makefile”重命名为“Makefile”,然后:
cvs: hash.c:312: findnode: Assertion `key != ((void *)0)' failed.
cvs [server aborted]: received abort signal
CVS从未被设计用于处理不区分大小写的文件系统。它 已被修补到它主要工作的程度,但仍有 有些地方没有。这是其中之一。
您可能还想阅读线程中的其余消息。
答案 2 :(得分:0)
也许在您的存储库中存在某种预提交检查,请参阅here
答案 3 :(得分:0)
不确定问题是什么,但我通过进入服务器并删除存储库中的文件Attic / newfile.v并再次添加它来解决它。