Version control 在CVS中移动文件而不重置修订号

Version control 在CVS中移动文件而不重置修订号,version-control,cvs,Version Control,Cvs,最近我在我们的源代码树中移动源文件。例如,将一组文件放入公共程序集中。我一直在这样做,从CVS中删除文件,然后在新位置再次添加它。问题是文件的修订号重置回1.1。是否有一些简单的方法可以在不重置数字的情况下移动东西 我可能应该提到,我没有访问存储库的权限,因此任何需要的东西都不会帮助我,但可能会帮助其他人。有一些关于如何做到这一点的详细信息: 移动文件的正常方法是发出cvs重命名命令 $cvs重命名旧的新的 $cvs commit-m“将旧的重命名为新的” 这是移动文件的最简单方法。它不容易出错

最近我在我们的源代码树中移动源文件。例如,将一组文件放入公共程序集中。我一直在这样做,从CVS中删除文件,然后在新位置再次添加它。问题是文件的修订号重置回1.1。是否有一些简单的方法可以在不重置数字的情况下移动东西

我可能应该提到,我没有访问存储库的权限,因此任何需要的东西都不会帮助我,但可能会帮助其他人。

有一些关于如何做到这一点的详细信息:

移动文件的正常方法是发出cvs重命名命令

$cvs重命名旧的新的
$cvs commit-m“将旧的重命名为新的”

这是移动文件的最简单方法。它不容易出错,并且保留了所做工作的历史记录。CVSNT客户端可以通过签出存储库的旧版本来检索原始名称

此功能仅在CVSNT服务器2.0.55及更高版本上受支持


这不是CVS的已知缺陷之一吗?没有内置的文件移动机制?但是,我已经很久没有使用它了,所以现在可能有一个解决方案


Subversion将允许您移动文件,但这也将被跟踪,以便新文件获得最新的修订号。

最简单的方法是访问您的repo所在的cvs服务器,只需使用mv移动文件夹/文件(假设使用*nix机器)。这样,文件的历史记录将被保留。

无法使用仅限客户端的命令移动文件。您需要访问服务器文件系统,并且可以将存储库中的“、v”文件移动到新位置。这将保留所有历史记录,因为CVS将每个修订及其注释记录在该文件中

请记住,删除文件时,文件会移动到“阁楼”子文件夹中(从客户端看不到)。这是删除文件后恢复文件的方式

一般来说,这种方法没有立即出现的问题,但是你必须考虑后果,如果你决定检查一个早期版本的产品,它可能依赖于先前的目录结构。p>
这就是其他版本控制系统(如Subversion)的优势所在。

实现此效果的公认方法是执行以下步骤。这方面的技术术语是副本

  • 登录承载CVS存储库的服务器,并将存储库文件从您想要的位置复制到新位置
  • 在客户端,cvs从旧位置删除文件
  • 在客户端,cvs更新新位置中的目录内容(以便文件显示在那里)
  • 在客户端,对复制的文件执行强制cvs提交(使用-f标志),以记录其被复制的事实(添加日志注释)

  • 此过程在其新位置维护文件历史记录,并且不会中断存储库的向后连续性。如果您及时向后移动,文件将正确显示在其旧位置。您也可以使用相同的过程重命名文件。

    移动时使用-v选项似乎会保留您的版本历史记录,请参见下文

    CVS重命名文件很麻烦。 从存储库的角度来看,您 只需删除文件或添加新文件即可。 因此,通常的过程是

    mv oldfile.c newfile.c cvs delete c cvs add newfile.c

    这确实有效,但你失去了所有 更改您想要写入的信息 在提交操作中 艰难的发展,这可能是 不是你想要的。但是有一种方法; 您必须可以直接访问 存储库。首先,去那里,找到 项目所在的目录,并执行以下操作 以下是:

    cp oldfile.c,v newfile.c,v

    现在转到您的工作目录并 进行cvs更新;c将 显示为新文件。现在你可以开始了 删除oldfile.c并提交


    常规CV呢?据我所知,CVSNT是windows。