添加新文件后尝试提交到 cvs 分支时出现此错误
Assertion failed: key != NULL, file hash.c, line 317
知道如何解决它,以便我可以检查我的代码吗?
服务器和客户端都是 Linux,并且涉及到预提交。
添加新文件后尝试提交到 cvs 分支时出现此错误
Assertion failed: key != NULL, file hash.c, line 317
知道如何解决它,以便我可以检查我的代码吗?
服务器和客户端都是 Linux,并且涉及到预提交。
睡眠者写道:
不确定问题是什么,但我通过进入服务器并删除存储库中的文件 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 文件的含义。
您是否在 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 从来没有被设计用来处理不区分大小写的文件系统。它已被修补到它主要工作的地步,但仍有一些地方不能工作。这是其中之一。
您可能还想阅读线程中的其余消息。
不确定问题是什么,但我通过进入服务器并删除存储库中的文件 Attic/newfile.v 并再次添加它来解决它。
也许对您的存储库有某种预提交检查,请参见此处