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分支的修改合并到本地的主版本下
cvs commit 把合并后的版本更新到服务器的主版本上,因为之前的update -j命令并不影响服务器上的主版本。
转自
http://www.cppblog.com/prayer/archive/2009/05/18/83256.html
posted on 2009-12-06 01:16
chatler 阅读(221)
评论(0) 编辑 收藏 引用 所属分类:
cvs