cvs

一,cvs下载,安装

见附件。

 

二,分支

2.3 创建分支(Branch)


为什么要创建分支?
软 件项目开发过程中充满了各种不确定性,有时我们需要试探,有时我们需
要分心去照顾从前的版本。例如,下面是两个典型的例子:
1) 软件已经达到了一个相对稳定的状态。下一步是想试验加入一种新功能(新
特征,新算法等),但是对它没有信心,担心加入新内容之后,系统变得不稳
定, 希望能方便地回到目前的稳定状态。当然,如果新内容加入之后,效果
不错,也希望在这个基础上继续开发。应该如何操作呢?
2) 软件1.0 已经发布了,目前的工作已经集中在版本2.0。但是,这时传来消息,
版本1.0 有一个严重的Bug,请问现在该怎么办?
在上述情形 下,可通过创建分支(Branch)来处理。
分支是什么呢?版本控制系统的一个基本功能,就是把某些版本的变化与开
发主线分离起来。与开 发主线分离的开发活动就叫分支(Branch)。分支能够解决
上面的两个问题。


创建分支的方法:
1) 选定要创建分支的文件(或者子目录、甚至是整个Module)
2)选择主菜单Modify 下的create a branch
3)在 create branch 对话框中,先钩上“Check that the files are unmodified before branching”,再在“new branch”编辑框中,填写分支名称。在我们的例子中, 我们选择了一个叫GuiButton.cpp 的文件,来示范分支操作。其实对于子目
录和整个Module,情形是类似的。我们创建的分支名叫”try_branch”。见下图。
分支 名称字符串必须符合与tag 一致的要求,具体见本章3.2 节。
4)按“确定”按钮。这样,新的分支就创立了。
我们可以在版本历史图 中,看一下新的分支是如何表示的:
的确,我们在文件GuiButton.cpp 的版本2.8 上,创建了分支“try_branch”。
下 面,我们将离开主开发线(也就是上图v1.1->1.2->2.0->2.5->2.6->2.8 的那条主线),在分支try_branch 上进行工作。


2.4 进入分支工作


我 们工作目录中,目前是存放着开发主线的文件。为了进入分支工作,就需
要清空主线文件,而把分支文件从远程仓库中下载到本地,然后我们就可以在分
支 上进行工作。具体操作是:
1)鼠标选择左边窗口中的Module
2)进行Update 操作(Ctrl+U)
3)在Update settings 的对话框中,钩上“Create missing directories that exist in the repository”
4)在Update settings 的对话框中,选择“Update options”栏目中,钩上“Retrieve
rev./tag/branch”,并填写分支名“try_branch”,见下图。
5) 按“确定”按钮。结果是,工作目录下,主线文件消失了,分支文件出现了,
见下图:
在本例子中,分支“try_branch”只有 GuiButton.cpp 一个文件。
现在我们可以在分支中工作了,对GuiButton.cpp 文件进行多次修改,并且提交
修改 (Commit),具体的修改和提交操作可见第二章相关内容。
由于多次修改,GuiButton.cpp 的版本历史图变成了下面的样子:
参 照上图,我们在分支中,对GuiButton.cpp 进行了三次修改和提交,分别产生
了版本2.8.2.1, 2.8.2.2, 2.8.2.3。


2.5 从分支回到开发主线


从分 支回到开发主线,对分支的工作有两种处理情形:
1)我们接受分支做的工作,需要把它带到主线上去,继续向前开发。这个把分
支工作带回开发 主线的过程,CVS 的术语叫Merge(融合)。
2)我们不希望分支的工作影响原来主线的工作,不把分支的工作带到主线上来。
下面,我 们就进行回到主线的操作:
1)选择左边窗口的Module
2)进行Update 操作(Ctrrl+U)
3)在Update settings 对话框中,钩上“Create missing directories that exist in the
repository ”
4)在Update settings 对话框中,钩上“Reset any sticky date/tag/'-k' options”。如
果不想Merge 分支的工作,直接跳到步骤6)
5)如果想接受分支工作,进行Merge,点击“Merge option”栏目,选择“Only
this rev./tag”,并填写要Merge 的分支名,见下图:
6)按“确定”按钮。
对 于接受Merge 的情形,我们可以看到现在工作目录是这个样子:
WinCvs 信息输出窗口中,出现了merge 相关的内容:
RCS file: F:/CVSRoot/MyWork/GuiButton.cpp,v
retrieving revision 2.8
retrieving revision 2.8.2.3
Merging differences between 2.8 and 2.8.2.3 into GuiButton.cpp
句子“Merging differences between 2.8 and 2.8.2.3 into GuiButton.cpp”的意思就是,
对于文件GuiButton.cpp, 已经把版本2.8(主线)和版本2.8.2.3(分支)的内容结合起
来了。可以看到,文件GuiButton.cpp 图标变红了,表示它已经在主线版本2.8
基础上,进行了修改。
现在我们提交(Commit)这个修改,它的版本变成了2.9。版本2.9 是版本2.8
的内容与2.8.2.3 相融合的结果。让我们在版本历史图中,看看是否是这样:
在上面的图中,我们看到,开发主线已经从 2.8 延长到了2.9,从分支版本2.8.2.3
到版本2.9,有一条红细线,这就是Merge 的结果了。
如果我们不选择 Merge, 从分支版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值