在源码库的使用过程中,各个模块都可能会产生变化:有新的文件不断地添加进来,也有一些不再需要的文件被删除。在某些情况下,用户可能仍然希望能获得某一个老版本的所有代码文件(包括那些已被被删除的文件)。
通过下面的方式,用户可以在当前版本中删除一个文件而仍然在老版本中保留它:
确保文件中不存在没有被提交的修改。请参阅[查看差异 在 第 1 章]中的查看方法。用户也可以使用status命令或者update命令。如果在没有提交的情况下删除了一个文件,当然无法重新从源码库中获得修改后的内容。
从你工作目录的拷贝中删除该文件,比如用rm。
使用cvs remove filename命令告诉CVS删除该文件。
使用cvs commit filename命令告诉源码库里要删除该文件。
当用户提交文件的删除操作后,CVS将记录该文件不再存在。一个文件可能存在于源码库的一些分支里,而在另外的分支里没有,或者在后来加入同名的另一个文件。根据在checkout或update命令中指定-r和-D选项,CVS可以正确地创建和不创建文件。
cvs remove [options] files …
从源码库中删除文件(不包括从工作目录中删除的文件)。本命令不会真正从源码库里删除文件直到用户提交了删除操作。请参阅[附录 B]查看所有可用的选项。
下面是删除多个文件的例子:
$ cd test $ rm *.c $ cvs remove cvs remove: Removing . cvs remove: scheduling a.c for removal cvs remove: scheduling b.c for removal cvs remove: use 'cvs commit' to remove these files permanently $ cvs ci -m "Removed unneeded files" cvs commit: Examining . cvs commit: Committing . |
为了简化操作,可以通过cvs remove命令-f选项一步就从源码库中删除文件。上面的例子可以改写为:
$ cd test $ cvs remove -f *.c cvs remove: scheduling a.c for removal cvs remove: scheduling b.c for removal cvs remove: use 'cvs commit' to remove these files permanently $ cvs ci -m "Removed unneeded files" cvs commit: Examining . cvs commit: Committing . |
如果用户删除(remove)文件之后,在提交以前又改变了主意,可以使用add命令来取消删除(remove)操作。
$ ls CVS ja.h oj.c $ rm oj.c $ cvs remove oj.c cvs remove: scheduling oj.c for removal cvs remove: use 'cvs commit' to remove this file permanently $ cvs add oj.c U oj.c cvs add: oj.c, version 1.1.1.1, resurrected |
如果你在运行删除(remove)命令前意识到了错误,可以使用更新(update)命令来恢复文件:
$ rm oj.c $ cvs update oj.c cvs update: warning: oj.c was lost U oj.c |
如果用户只是在当前工作的分支上删除了文件[第 5 章],也可以将删除后的内容合并到别的分支[合并能添加和删除文件 在 第 5 章]。