Posted on 2009-05-18 10:05
Prayer 阅读(1085)
评论(1) 编辑 收藏 引用 所属分类:
CVS
CVS中为一个模块创建一个分支使用的命令是tag或rtag。这两个命令很相似,先用tag命令来做介绍。
假设有一个模块foo_ware,一直在head主分支里工作,但是现在需要建立一个分支foo_tag用来做测试版本的开发,则方法如下:
在foo_ware的一个工作目录下,执行:
cvs tag foo_tag //把服务器上的当前工作目录下的所有文件增加标记foo_tag
cvs update -r foo_tag //如果要在当前目录的foo_tag分支下继续工作,则要把当前目录下的文件状态都更新为foo_tag分支,这是因为tag命令只为服务器上的文件增加标记foo_tag,而不改变当前目录下文件的状态。
cvs commit //如果当前目录下的文件在做分支之前已经修改过了,而且又想把这些修改应用于foo_tag分支,则要commit。
如果要从服务器上签出另外一个foo_tag分支的副本,则用如下命令:
cvs co -r foo_tag -d new_dir foo_ware //必须要指明要签出的分支是foo_tag,否则签出的版本还会是head主分支。
这样签出之后,不论再update和commit,都是在foo_tag分支下进行了,不会更改head主分支里的状态。
tag和rtag的区别在于,rtag不需要有本地副本的存在,就可以增加或修改服务器模块上的tag,而tag必须有一个本地版本做参考,更新服务器上的对应于本地的那些文件,如上例所示。
如果要把分支版本里的修改合并到主分支里,方法如下:
在分之版本的本地副本做好commit之后,在主分支的本地副本下,执行:
cvs update -j foo_tag //把foo_tag分支的修改合并到本地的主版本下
... do some revision
cvs commit //把合并后的版本更新到服务器的主版本上,因为之前的update -j命令并不影响服务器上的主版本。