签到时cvs错误

时间:2008-09-16 08:30:42

标签: version-control cvs

在添加新文件后尝试提交cvs分支时,我收到此错误

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

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

4 个答案:

答案 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并再次添加它来解决它。