CVS分支合并指南.doc_第1页
CVS分支合并指南.doc_第2页
CVS分支合并指南.doc_第3页
CVS分支合并指南.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CVS分支合并指南cvs 允许你把修改隔离在各自的开发线上,这就是分支(branch)。当你改变一个分支中的文件时,这些更改不会出现在开发主干(main trunk)和其它分支中。在这之后你可以使用 merging 把这些变更从一个分支移动到另一个分支(或主干)。合并首先使用 cvs update -j 命令,将这些变更合并到工作目录。然后你可以提交这个版本,这样也可以将这些变更作用于其它的分支。下面的操作描述约定都以目录为操作对象。1. 建立一个分支使用 tag -b 去建立一个分支;例如,假定你现在有一个工作副本: $ cvs tag -b rel-1-0-patches这将基于工作副本的当前版本分离出一个分支,并分配 rel-1-0-patches 名字给该分支。有一点对理解分支很重要,分支是在 CVS 仓库中创建,而非在工作副本中创建。正如上面的例子,基于当前版本创建一个分支不会自动把当前的工作副本切换到新的分支上。2. 检出与更新分支你可以通过两种方式恢复分支:重新从仓库检出一份或是从现有的工作副本切换过去。 为了从仓库检出一个分支,使用 checkout 命令并带上 -r 标志,后面是这个分支的标签(branchtag)名: $ cvs checkout -r rel-1-0-patches tc或者如果你已有了一个工作副本,你可以使用 update -r 命令切转到这个分支: $ cvs update -r rel-1-0-patches tc或者使用另一个等效的命令: $ cd tc $ cvs update -r rel-1-0-patches这对工作副本为主干代码或是其它分支都是有效的 上面的命令将把它切换到指名的分支。同 update 命令相类似,update -r 合并你所做的任何改变,通知你出现的冲突。 一旦你的工作副本已经转向一个特定的分支,它将一直保持在这个分支内,除非你又做了其它的操作。这意味着从这个工作副本提交的变更将加到这个分支的新版本中,而不影响到主干版本和其它分支。 想看一个工作副本是基于哪一个分支,可以使用 status 命令。在它们输出中查找一个 Sticky tag 的域(参阅 Sticky tags) 那就是 cvs 告诉你当前工作文件分支号的方式: $ cvs status -v driver.c backend.c = File: driver.c Status: Up-to-date Version: 1.7 Sat Dec 5 18:25:54 1992RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v Sticky Tag: rel-1-0-patches (branch: 1.7.2) Sticky Date: (none) Sticky Options: (none) Existing Tags: rel-1-0-patches (branch: 1.7.2) rel-1-0 (revision: 1.7) = File: backend.c Status: Up-to-date Version: 1.4 Tue Dec 1 14:39:01 1992 RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v Sticky Tag: rel-1-0-patches (branch: 1.4.2) Sticky Date: (none) Sticky Options: (none) Existing Tags: rel-1-0-patches (branch: 1.4.2) rel-1-0 (revision: 1.4) rel-0-4 (revision: 1.4) 请不要因为每个文件的分支号不同(1.7.2 和 1.4.2)而迷惑。分支的标签是相同的,rel-1-0-patches,所以这些文件是在相同的分支上。数字简单地反映在每个文件的版本历史中在制造分支的点。在以上的例子中,分支建立之前,driver.c 比 backend.c 有更多的变更,因此它们的版本编号是不同的。 3. 合并一整个分支你可以把另一个分支上的修改合并到你的工作副本,只要在 update 子命令中加 -j tagname 的标志。-j 的意思是“join”。 Consider this revision tree: +-+ +-+ +-+ +-+ ! 1.1 !-! 1.2 !-! 1.3 !-! 1.4 ! +-! 1.2.2.1 !-! 1.2.2.2 ! +-+ +-+ ! tag-1-6分支R1fix 的最后版本的tag是tag-1-6。下面的例子假定模块 mod 只包含一个文件 m.c。 $ cvs checkout mod # Retrieve the latest revision, 1.4 $ cvs update -j tag-1-6 # Merge all changes made on the branch, # i.e. the changes between revision 1.2 # and 1.2.2.2, into your working copy # of the file. $ cvs commit -m Included tag-1-6 # Create revision 1.5.请注意,此操作是把分支上得变化,也就是分支得起点(revision 1.2)版本和分支得终点(revision 1.2.2.2)版本的差异,合并到你的工作副本中,不是将分支得终点(revision 1.2.2.2)版本的所有内容合并到你的工作副本中。在合并时可能会发生冲突。如果这种情况发生,你应该在提交新版本之前解决它。合并命令执行完后,强烈建议使用 cvs diff 命令检查合并结果和合入版本(及-j tag中tag指示的版本)的差别,以确保物理合并的完整性。添加了这段说明4. 在文件添加和删除的情况下?如果你在合并时做的改变涉及到添加或删除一些文件,update -j 将反映这些变化。例如: cvs update -A touch a b c cvs add a b c ; cvs ci -m added a b c cvs tag -b branchtag cvs update -r branchtag touch d ; cvs add d rm a ; cvs rm a cvs ci -m added d, removed a cvs update -A cvs update -jbranchtag在执行这些命令且 cvs commit一完成之后,文件 a 将被删除,而文件 d 将被加入到主分支。注意使用 update -j tagname 也许行但结果可能不是你想要的。注意,当用静态标签(-j t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论