最近我在源代码树中移动了源文件。例如,将一堆文件放入公共程序集中。我一直在这样做,我从CVS删除文件,然后在新的位置再次添加它。问题是文件的修订号重置为1.1。是否有一些简单的方法来移动东西而不重置数字。
我可能应该提到我无法访问存储库,所以任何需要它的东西都不会帮助我,但它可能对其他人有帮助。
答案 0 :(得分:22)
实现此效果的普遍接受的方法是执行以下步骤。技术术语是复制品。
此过程将文件历史记录保留在新位置,并且不会破坏存储库的向后连续性。如果您及时移回,该文件将正确显示在其旧位置。您也可以使用相同的步骤重命名文件。
答案 1 :(得分:9)
无法使用仅客户端命令移动文件。您需要访问服务器文件系统,并可以将存储库中的“,v”文件移动到新位置。这将保留所有历史记录,因为CVS会在每个文件中记录每个修订版本及其注释。
请记住,删除文件时,文件会移动到“Attic”子文件夹(无法从客户端看到)。这是删除文件后如何恢复的。
一般来说,这种方法没有直接问题,但是如果您决定查看可能依赖于以前目录结构的产品的早期版本,则必须考虑后果!
这是Subversion等其他版本控制系统具有明确优势的地方。
答案 2 :(得分:3)
online CVS manual详细介绍了如何执行此操作:
移动文件的正常方法是发出cvs rename命令。
$ cvs重新命名旧的新 $ cvs commit -m“将old重命名为new”
这是移动文件的最简单方法。它不容易出错,它保留了所做的历史。 CVSNT客户端可以通过签出旧版本的存储库来检索原始名称。
此功能仅在CVSNT服务器2.0.55及更高版本上受支持。
答案 3 :(得分:3)
最简单的方法是访问你的repo所在的cvs服务器,然后用mv移动文件夹/文件(假设是* nix机器)。这样就可以保存文件的历史记录。
答案 4 :(得分:2)
这不是CVS的已知缺陷之一 - 没有用于移动文件的内置机制?然而,自从我使用它以来已经很长时间了,所以也许现在有一个解决方案。
Subversion将允许您移动文件,但也会对其进行跟踪,以便新文件获取最新版本号。
答案 5 :(得分:2)
在移动时,似乎保留了您使用-v选项的版本历史记录,请参阅下面的
CVS重命名文件很麻烦。 从存储库的角度来看,你 只需删除文件或添加新文件即可。 所以,通常的过程是
mv oldfile.c newfile.c cvs delete oldfile.c cvs add newfile.c
这确实有效,但你失去了所有 改变你想写的信息 在多年的提交操作中 艰难的发展,这可能是 不是你想要的。但有一种方法; 你必须直接访问 库。首先,去那里,找到 您的项目所在的目录 以下内容:
cp oldfile.c,v newfile.c,v
现在转到您的工作目录并且 做cvs更新; newfile.c会 显示为新文件。现在你可以cvs 删除oldfile.c并提交。