我的一个同事彻底搞乱了我们主要的CVS仓库中一个目录的内容。我需要将整个模块还原到去年年底的状态。请问如何使用CVS命令完成此操作?
他添加和删除了数百个文件,因此简单的“从旧的checkout复制文件并提交”不够。
我已经阅读了文档和搜索了网络,并尝试了以下方法:
cvs co modulename # Note no -P option
cvs up -jHEAD -jMAIN:2008-12-30 modulename
但这并不起作用-他创建的新文件被删除了,但旧文件和目录没有被恢复。(我没有提交它)。我可能可以为此编写一个shell脚本,但肯定已经有CVS中的这个功能了吧?更新:一些澄清:1.我可以在特定日期获取模块的本地检出。问题是如何将其放回CVS。2.我有备份,但使用像CVS这样的版本控制系统的重点是应该很容易地获得任何历史状态。下一次发生这样的事情,我可能没有足够的运气拥有备份(例如,备份是每天进行的,因此我可能会失去一天的工作)。3.我知道CVS很老了,我们应该转移到更新的东西。但在一个大型团队中,有大量基于CVS的工具(检出和构建脚本、每晚构建服务器等),这样做的时间成本是相当高的。(评估、更新脚本、测试、迁移、培训、失去开发人员的时间、同时维护两个系统,因为CVS仍然需要用于旧分支)。因此,这必须由管理层计划和安排。更新#2:我将在这个问题上开始一个悬赏。为了有资格获得奖励,您必须解释如何使用普通的CVS命令还原,而不是使用hacky shell脚本。
更新 #3: 服务器使用的是 CVS 1.12.13。访问方式为 pserver。我可以在 Linux PC 上使用相同版本的 CVS,或在 Windows 上使用 CVSNT 2.0.51d 客户端。