CVS概念大全

CVS概念大全

CVS
仓库:对CVS来说先要建立一个仓库,所以项目都会被服务器保存在仓库中,并且CVS服务器会在仓库下建立一个CVSROOT目录。
注意--保存到仓库中的文件一般不要包含原代码编译后的二进制文件。
工作区:把项目文件从仓库中签出到本地保存的地方。
签出
提交
更新
模块:一般的版本控制器都允许组织仓库中的文件,在最上面一层文件是按照项目进行划分,对于每个项目又可将文件按照模块(以及子模块)划分。一个模块是一组可以按照名称进行签出的文件。模块甚至可以让你在不同的项目间共享代码。
版本:在CVS中会针对每个文件指定不同的修订版本号序列,但我们不能用单个文件的版本号来跟踪其它的一些特征,如项目的版本。即CVS指派给文件的单个修订版本号不应该用做(项目的)外部版本号。版本控制器提供标记(tags)来作为外部版本号。
标记:由于我们在修改单个文件后版本控制器会给一个版本号,如1.46,但这是针对一个文件不是对一组或是某个模块或项目,所以版本控制系统可以让你为特定时间点的一组文件(或模块,项目)指派标记名,如“Release1”,那以后就可以使用通用的标记来签出这些文件,而与单个文件的版本无关。
分支:对开始的一个项目要发展成两个方向,如一个是继续开发,一个是准备发布的版本,这样人员可以在这两个分支上进行签入签出操作,而不相互影响(那为什么我们不直接分成两个项目了,是应为这两个分支也可以相互影响,我们可以将一个分支上修正的bug合并到另一个分支上,当然也可以到主干上,可以说主干也是一个分支)。分支用标记来区分,并且分支中的文件修订号用额外的数字表示。
合并:分支间的影响。
关于版本控制中的锁选项:
严格锁:文件签出后只能有一个用户有修改权限。
乐观锁:这是解决冲突的第二种策略,CVS默认的就是这种,实际上采用这种方式文件就相当于没有锁定似的。双方使用者都能修改签出的文件,如果一人修改完后签入了,另一个也要签入时,那么仓库会要求你先更新这个文件,注意这里巧妙的地方是版本控制器会试图将你的修改和仓库中的修改合并在一起,如果你们两人修改的不是同一个地方,则更新后你的修改也会保留住,这是你就可以签入了;如果不巧的是你们两人都修改的是同一个地方,这是会产生冲突,CVS会列举出你们的修改的地方,让你手动解决这个冲突。
一些常用操作:
装好cvsnt后,通过cvsnt control将服务器上的一个文件夹建成仓库,cvs系统会自动在该文件夹下建CVSROOT目录,它下面有些很有用的文件,如有关用户及权限的设定的文件。
装好服务器端后,再装客户端,如wincvs,也可以用IDE的客户端,建立一个新项目,commit。
下面谈一下关于删除的操作,当我们已在服务器端的仓库中有个项目(模块),要删除它下的文件时,我们可现在自己的工作区中先删除这个文件,然后commit,这是服务器端就逻辑上删除了这个文件,我们在其它的客户端上check out时,就不会有这个文件了,当然我们可以在项目中恢复这个文件,实际上在服务器端的仓库中并没有物理删除它。如果要物理删除仓库中的某个文件,就要到服务器上去手动直接删了,但一定要记住,要物理删除的文件一定要先逻辑删除,不然以后客户端操作会出错的。如果要删除仓库中的目录,方法也是一样的,又可能要先删除目录下的所有文件先。
当我们用wincvs删除某个在服务器中的项目时,首先要删除该项目下的所有文件和目录,然后commit,这是在check out这个项目,注意在check out时选择自动删除空目录,这时这个项目在wincvs中就没了,其它的客户端也签不出了,然后我们可以在服务器端物理删除这个项目了。