题
最近我在源代码树中移动了源文件。例如,将一堆文件放入公共程序集中。我一直在这样做,我从CVS删除文件,然后在新的位置再次添加它。问题是文件的修订号重置为1.1。是否有一些简单的方法来移动东西而不重置数字。
我可能应该提到我无法访问存储库,所以任何需要它的东西都不会帮助我,但它可能对其他人有帮助。
解决方案
无法使用仅客户端命令移动文件。您需要访问服务器文件系统并可以移动“,v”。将存储库中的文件存入新位置。这将保留所有历史记录,因为CVS会在每个文件中记录每个修订版本及其注释。
请记住,文件会被移动到“阁楼”中。删除子文件夹(在客户端无法看到)。这是删除文件后如何恢复的。
一般来说,这种方法没有直接问题,但是如果您决定查看可能依赖于以前目录结构的产品的早期版本,则必须考虑后果!
这是Subversion等其他版本控制系统具有明确优势的地方。
其他提示
实现此效果的普遍接受的方法是执行以下步骤。技术术语是复制品。
- 登录托管CVS存储库的服务器并复制(不要移动)存储库文件,从您想要的位置到新位置。
- 在客户端cvs从旧位置删除文件。
- 在客户端cvs更新新位置的目录内容(以便文件出现在那里)。
- 在客户端执行复制文件的强制cvs提交(使用-f标志)以记录它被重新复制的事实(为该效果添加日志注释)。 醇>
此过程将文件历史记录保留在新位置,并且不会破坏存储库的向后连续性。如果您及时移回,该文件将正确显示在其旧位置。您也可以使用相同的步骤重命名文件。
在线CVS手册详细介绍了如何操作这样:
移动文件的正常方法是发出cvs rename命令。
$ cvs重命名旧的新
$ cvs commit -m"“将旧名称重命名为新”这是移动文件的最简单方法。它不容易出错,它保留了所做的历史。 CVSNT客户端可以通过签出旧版本的存储库来检索原始名称。
此功能仅在CVSNT服务器2.0.55及更高版本上受支持。
最简单的方法是访问你的repo所在的cvs服务器,然后用mv移动文件夹/文件(假设是* nix机器)。这样就可以保存文件的历史记录。
这不是CVS的已知缺陷之一 - 没有用于移动文件的内置机制?然而,自从我使用它以来已经很长时间了,所以也许现在有一个解决方案。
Subversion将允许您移动文件,但也会跟踪它,以便新文件获取最新版本号。
在移动时,似乎保留了您使用-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并提交。