1

我在尝试将文件添加到 CVS 时遇到一个奇怪的错误。

问题开始是因为案例错误并导致问题(即 MyFile.js 在 CVS 中作为 myfile.js)

我尝试删除文件,然后将其重新添加,现在我收到以下错误:

cvs server: could not find parsed rcsfile MyFile.js

我有什么办法可以永久删除这个文件并重新开始?

在 Windows 资源管理器(在服务器上)中删除文件并没有解决问题。当我在 Windows 资源管理器中删除该文件时,它允许我重新添加它,但告诉我它已在我再次更新后立即被删除。

编辑:

我尝试了以下方法:

  • 通过 cvs 服务器上的 windows 资源管理器删除版本化文件,并通过 cvs add 和 commit 将其添加回来。这允许我添加它,但在第一次更新时将其从我的沙箱中删除。
  • 将文件添加为另一个名称(即 MyFile2.js),并使用 cvs rename 重命名为正确的名称(MyFile.js)。这会将文件保留在我的沙箱中,但所有其他用户都会使用其他名称(MyFile2.js)。如果我从我的沙盒中删除该文件,那么它会以另一个名称 (MyFile2.js) 的形式返回。
  • 通过 cvs 服务器上的 windows 资源管理器删除版本化文件并通过 cvs add 和 commit 添加它,然后尝试通过 CVS 将其删除。这会导致来自 CVS 的消息不同步。更新会从我的沙箱中删除该文件。
4

5 回答 5

1

NT 文件系统在大小写方面有点古怪:它会记住最初的大小写,但之后会忽略任何更改。

所有这些都意味着您将不得不在存储库中采取一些激烈的步骤。首先做一个备份,如果你不习惯这样做,找一个了解 CVS 的人。

第一步是找到您的存储库。如果您进入工作目录并查看文件的内容CVS/Root,您将看到如下字符串:

:ext:rivendell:/tera/cvs

这表示我的 CVS 存储库是从目录“/tera/cvs”中的主机“rivendell”提供的。在该目录下,您将找到各个项目,最终您将向下钻取目录,直到找到您想要的项目。

此时,您将看到版本文件——之所以如此命名是因为它的末尾有一个“,v”,或者您不会。如果没有,请查找名为的目录Attic(尽管您说 CVSNT 没有阁楼,但我不相信您)。

在这里你有两个选择。最简单的方法是删除版本文件。您也可以将其重命名为一些无害的名称,例如“ix,v”,然后使用正确的大写字母重新命名。无论如何,下一步不会改变

现在回到你的工作站,删除你的工作目录。完全地。不要试图删除 CVS 子目录或任何花哨的东西。如果您有需要保留的文件(因为它们尚未签入),请将它们复制到安全的地方。

从存储库中签出一个新的项目副本,并创建具有正确大小写的文件。同样,由于 NTFS 对大写字母不满意,您不能简单地将保存的版本复制到目录中并重命名它。

于 2009-08-14T19:42:53.960 回答
0

CVS 正在成为一种废弃软件:它仍然有很多错误并且不会被修补。如果您可以切换到SVN,那就更好了。甚至还有一些工具可以进行导入(我自己用过一个,效果很好)。他们导入所有内容,包括每个文件的历史记录。然后您将能够轻松解决您的问题。

众所周知,CVS 在重命名(在其他操作中)时会很痛苦。因此,如果您更改为 SVN,将来您将花费更少的时间与您的版本控制软件作斗争。

如果您无法切换到 SVN :

  • 如果你真的需要解决这个问题,最终的解决方案是重新安装 CVS。这是最后的手段,但它会起作用。

编辑:我发现了这个。也许您可以删除文件混乱的修订版?使用 -0range 命令。注意:据说该命令很危险。所以你可能想先备份你的 cvs。

于 2009-08-18T02:05:44.050 回答
0

您是否尝试发出“cvs remove”命令从沙箱中删除文件并在服务器上将其标记为删除,提交删除并重新添加它?我猜您遇到的情况是您的沙箱和服务器不同步。一旦文件在 cvs 控制下,你不应该删除/重命名/等。使用 shell 命令,您应该只使用 CVS 命令。另请注意,CVSNT 需要重命名后跟“目录”提交 - 仅提交文件不会在服务器端注册重命名 - 无论如何,重命名存在一些问题,在最近的版本中解决了一些问题。

于 2009-10-29T16:50:43.477 回答
0

“cvs remove”后跟“cvs commit”是否不起作用?

于 2009-08-14T19:07:17.557 回答
0

您还需要从存储库本身的 Attic 文件夹中删除该文件。

于 2009-08-12T16:23:50.330 回答