Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

CVS分支

Posted on 2009-05-18 10:05 Prayer 阅读(1019) 评论(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命令并不影响服务器上的主版本。

Feedback

# re: CVS分支[未登录]  回复  更多评论   

2011-09-16 11:10 by jack
你好像把分支和标签没有弄明白

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理