要做一次, 并养成“先同步 后修改”的习惯,和Virvual SourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是在commit之前解决,如果你修改过程中,有其他人修改并commit到了CVS 库中,CVS会通知你文件冲突,并自动将冲突部分用 content on cvs server 标记出来,由你确认冲突内容的取舍。
版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。
(4)确认修改写入到CVS库里 cvs commit -m write some comments here file_name 注意:CVS的很多动作都是通过cvs commit进行最后确认并修改的,最好每次只修改一个文件(确保每个文件都有不同的注释)。
在确认前,还需要用户填写修改注释,以帮助其他开发人员了解修改的原因。
如果不写-m comments而直接确认cvs commit file_name 的话,cvs会自动调用系统缺省的文字编辑器一般是vi要求你写入注释。
注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容:以方便其他开发人员能够很好的理解 不好的注释,很难让其他的开发人员快速的理解:比如: -m bug fixed 甚至 -m 好的注释,甚至可以用中文,如: -m 在用户注册过程中加入了Email地址校验 修改某个版本注释: 每次只确认一个文件到CVS库里是一个很好的习惯, 但难免有时候忘了指定文件名, 把多个文件以同样注释commit到CVS库里了, 以下命令可以允许你修改某个文件某个版本的注释: cvs admin -m 1.3:write some comments here file_name (5)添加文件 touch new_file cvs add new_file 然后确认修改并注释 cvs ci -m write some comments here newfile 注意:对于图片,Word文档等非纯文本的项目,需要使用cvs add -kb选项按2进制文件方式导入k表示扩展选项,b表示binary,否则有可能出现文件被破坏的情况 如: Cvs add -kb new_file.gif cvs add -kb readme.doc 如果关键词替换属性在首次导入时设置错了怎么办? cvs admin -kkv new_file.css (6)删除文件 将某个源文件物理删除后,比如: rm file_name cvs rm file_name 然后确认修改并注释 cvs ci -m write some comments here 以上面前2步合并的方法为: cvs rm -f file_name cvs ci -m why delete file 注意:很多cvs命令都有缩写形式:commitci updateup checkoutco/getremoverm (7)添加目录 cvs add dir_name (8)查看修改历史 一旦当你用 cvs 存储了一个文件的版本控制的历史—如它是怎样被改变的,以及什么时候、被什么人改变等后,你就可以用很多种方法来查看这些历史。
最简单的方法: cvs log file_name cvs history file_name (9)查看当前文件不同版本的区别 cvs diff -r1.3 -r1.5 file_name (10)查看当前文件(可能已经修改了)和库中相应文件的区别 Cvs diff file_name (11)移动文件/文件重命名 , 移动一个文件的常规方法是把文件从 old 复制到 new 然后使用 CVS 命令从仓库里删除 old 文件,并且把 new 文件添加进去。
mv old new cvs remove old cvs add new cvs commit -m Renamed old to new old new 注意:因为更改文件名并且把它们移动到另一个目录中不是经常发生的,因此你在开始一个新项目时要做的第一件事是考虑你的文件组织。
更改文件名或移动文件并非不可能,但增加了理解上潜在的费解,并且 CVS 在更改名字的目录上特别的敏感。
(12)删除/移动目录 最方便的方法是让管理员直接移动,删除CVSROOT里相应目录(因为CVS一个项目下的子目录都是独立的,移动到CVSROOT目录下都可以作为新的独立项目:好比一颗树, ,其实砍下任意一枝都能独立存活) 对目录进行了修改后,要求其开发人员重新导出项目cvscheckout project_name 或者用cvs update -dP同步。
(13)恢复旧版本 方法一:cvs update -p -r1.2 file_name file_name 方法二: cvs update -j1.4 -j1.2 filename注意两个版本的前后顺序,记住要 commit为了保证是但前版本号,最好先 lock。
锁定文件:cvs admin -l filename (15) wincvs的日常使用 ① 从CVS 获取新模块 对于第一次获取模块, 如在本地机器上还没有相关代码, 我们可能首先要检出相关模块,从库中检出一个模块,会在本地创建构成模块的目录层,过程如下:1. 选择 Remote-Checkout module 菜单。
2. 在弹出的 checkout settings 对话框中,在 Module name and path...模块名输入框内,输入模块名。
注意模块名区分大小写,并且应该已经存在于 CVS 仓库中(如果不清楚,可问项目组长),并在 Local folder to checkout to 输入模块要存放的目录。
一个名为模块名的目录将会创建在你选择的目录下,如图 3.1 所示。
3. 选择该页面的 Globals 框,设置检出的只读项为 Checkout read-only ,这个选项可以不选,否则 checkout 出来的源代码将默认不允许用户进行修改的,如图 5.2。
4. 点击 确定 按钮。
例如项目经理告诉仓库中已经建立了一个 SDK-pc 的模块,要求小组各成员获取,作为小组成员的我准备将该模块获取到 d:Downcode 目录中。
图 5.1 图 5.2 这样在我计算机的 D:Downcode 就存在受 cvs 控制的项目代码目录了,如图 5.3: 图 5.3 ② 在程序开发过程中,从 CVS 同步别人的修改 在程序开发过程中,为了修改的同步,你也许要求将别人修改的合并到你本地使用的拷贝中,从服务端将修改取到本地的过程称为更新。
可以更新单个文件、被选中的文件集,或者一整个目录层。
例如,别人做了 SDK-pc/src 目录修改,我可能要做一次更新(将别人的修改和你的修改合并),那么在该模块上右击,选择“update selection”菜单,就会将代码更新到你机器上,见图 5.4 图 5.4③ 增加一个程序文件或者模块 如果在程序开发过程中,你增加了几个程序文件或者目录, 那么你要将增加的内容增加到 CVS 仓库中,例如我在 SDK-pc 目录下增加了 new1.cpp 和 new1.h 两个文件,那么可以选择要增加的这两个文件,执行 Modify-Add selection 菜单,将增加的文件加到仓库里,做完这一步后被增加的文件变成红色,是因为没有提交的缘故, 因此增加后千万别忘了做提交操作,方法是选择 Modify-commit 菜单,如图 5.5: 图 5.5注意:一定要分清楚二进制和文本两种不同类型的文件,WinCvs 会自动检测,如果 WinCvs给您判断错了,一定要手动纠正,否则可能对文件造成损害。
CVS 对二进制文件在仓库中的存放方式与 TEXT 不一样,更新机制也不一样。
④ 删除一个程序文件或者模块 在程序开发过程中,我们可能要删除一些废弃的文件或目录,例如现在要删除 SDK-pc目录中 new1.cpp 和 new1.h 两个文件,删除有两种方式: 1)仅从本地删除,删除的方法是选择要删除的文件,然后执行 Modify-erase selection菜单,也可以直接到此目录下删除该文件,此方法主要是用来得到服务器的“干净”版本。
2)从本地和服务器端都删除该文件,删除的方法是选择要删除的文件,然后执行Modify-Remove 菜单。
在完成这一步后千万别忘了做提交操作,方法选择 Modify-commit菜单,如图 5.6 所示。
图 5.6⑤ 将本地修改提交到仓库中 你可以提交一个文件或是一个目录及其子目录中的所有文件。
被修改的文件由它们旁边的一个红色文档图标标记出来。
选中想要提交的那个文件或文件夹,然后从 Modify 菜单中选择“Commit”。
⑥ 比较文件 有时我们可能想知道文件做了哪些修改,在检入之前你可能想看一下所做的修改, 或者同一文件各版本之间有哪些不同,在 winc
上一篇:
OpenGL实验指导
下一篇:
浙大人文社会科学引文索引来源期刊CSSCI(2010