- 浏览: 99968 次
- 性别:
- 来自: 深圳
最新评论
-
zpap:
这样的的设置好像是有问题的..
JDK环境变量配置小工具 -
qiaoxia_lan:
都不能访问,这是怎么回事啊。
为JAVA爱好者提供了超过400本电子书和3部视频 -
Tortoise:
最好多一些视频文件,个人感觉比较好一点
为JAVA爱好者提供了超过400本电子书和3部视频 -
skj198568:
看看了,好书还不少。
为JAVA爱好者提供了超过400本电子书和3部视频 -
njuptsoz:
谢谢分享!
JDK环境变量配置小工具
1.在cvs中增加目录.
如果要在CVS中增加一个目录层,而不是几个文件,有点麻烦,因为
增加操作不支持子目录。这种情况下,你要使用输入,就像创建新模块。
1) 选择Create->Import module
菜单
2)
在弹出的文件对话框中,选择你要增加的目录,并使这个文件夹打
开。
3) WinCvs 然后试图辨别目录树中的任何二进制文件。如果弹出了筛选
窗口,确保提及的文件被正确地设置了文本或二进制。
4) 在Import settings
输入设置对话框,输入模块名和目录名。如果
模块名叫MyProject,你要输入的子目录为source/utils,在
Select
the module name...
模块名输入框中输入:MyProject/source/utils
5) 在Vendor tag
厂商标记栏输入你的名字或公司的名字(没有空格)
6) 在Release tag
发行版本标记栏输入start
7) 点击OK
按钮。
WinCvs 然后将整个目录结构输入到CVS 服务其中。注意在输入操作中对你
的本地文件没有任何改变。也就是说,在输入后,你的本地拷贝没有置于
版本控制下。在对你的版本控制源文件工作前,你需要作:
1) 移走你的原始目录,如用Windows 的资源管理器将工程的顶级目录
更名为*.old。
2) 在WinCvs 中,选择你增加的目录,点击鼠标右键,选择
Update
selection
更新
3) 确信
Create missing directories that exist in the repository
被选中。
4) 点击OK 按钮。
WinCvs 就提供了最新置于版本控制下的目录层
2.1 统一版本
在开发过程中,不同文件的修改情况不一样,形成各个文件的版本都不同。
见下图。有的文件版本为1.6,有的为1.3,有的为1.2, 等等。
但是这时整个项目达到了某个稳定阶段,我们需要一个统一的固定版本(比如
2.0),所有文件的版本号都成为2.0, 不管它原来的版本号如何。下一阶段在这个
版本上继续工作。
统一提升Module 的版本,对于CVS 服务器运行在Linux 或者Unix 的情形,相
对容易一些。如果使用CVSNT 在Windows 下作为CVS 服务器,就比较麻烦,
因为CVSNT 自身还不够稳定。笔者探索出的统一版本的操作, 是在
WinCvs1.3.17.2 版本下的:
1) 在第一次从仓库中Checkout Module 的时候,在弹出的Checkout settings 对话
框中,选择Checkout option 子栏目,然后钩上”Rest any sticky tag/date/kopts”,
见下图。
2) 紧接着,对于工作目录中的根目录,做一次手动的Commit, 在Commit setting
对话框中,钩上“force commit”,见下图:
注意:当前只需要钩上“force commit”就可以了,不需选择其它选项。
3) 如果工作目录中还有子目录,一定要手动地去每个子目录做步骤2 同样的
“force commit”操作。步骤2 的操作之后,工作目录应该是这个样子:
也就是,所有的文件具有相同的版本号1.2,1.2 是WinCvs 自动给您的module
加的版本号,我们提升统一版本将在这个1.2 的基础上进行。
4) 做完前面的操作之后,就可以象平常一样对文件进行修改和提交了。改进后
的文件版本是WinCvs 自动管理的,为1.3, 1.4 等等。
5) 现在你想统一版本号了。操作过程:在左边窗口中,鼠标选择需要提升统一
版本的Module。
6) 使用Commit 操作(Ctrl+M 或者主菜单Modify->Commit),现在需要在Commit
settings 对话框的Commit options 栏目中,钩上“Force revision/branch”选项,
然后在它右边的编辑框中,输入你想提升的高版本号(例如2.0),注意这个
版本号应该大于工作目录下所有文件的版本号。操作见下图:
7) 执行完之后,我们看见工作目录变成下图的样子,所有文件的版本号变成2.0,
而且tag 也变成了“2.0”:
8) 我们需要把上述操作过程中产生的tag 去掉,以免影响今后的文件修改提交。
去掉tag 的方法是,选择左边窗口的Module, 执行一次同步操作(Update)。执
行Update 时,我们需要在弹出的”Update settings”对话框中,钩上“Reset any
sticky tag/date/k options”选项,见下图所示。
按“确定”按钮,这样,一次统一版本的行动就完成了。
注意,上述的操作,是在WinCvs1.3.17.2 版本下实施的。这个版本的WinCvs 自
带的CVSNT 版本为
Concurrent Versions System (CVSNT) 2.0.41a (client/server)
根据本人的测试,CVSNT 版本为2.0.51d 不支持上述统一版本的操作,可能是一
个Bug.
警示:
不要用2.0.51 版本的CVSNT,它不稳定。
2.2 创建标签(Tag)
标签(Tag),是CVS 中对文件版本的一种文字描述,使用它的原因是它能
够对版本进行有意义的表述,在版本控制中可以方便地存取。
例如,在开发过程中,某文件(或者整个Module)达到了稳定状态,此时
它的版本号假定为2.5,我们可以对这个文件(或者整个Module)加一个Tag,
名字叫”stable”,作为一个里程碑的标志。
加标签的操作方法:
先选择需要加标签的文件,文件夹或者Module, 然后在主菜单Modify 中,选择“create a tag on selection”。工具栏上也有相应的按钮,可以更直接地进行操作。在“Create tag settings”对话框中,填写要添加的tag,在本例子中是”stable”,如下图所示。
但是要注意,CVS 中,对tag 的限制比较严格:1. tag 起始字符只能是字母;
2. tag 只能由字母、数字、”-”和下划线“_”组成,不能含空格和点“.”。所以,这样的tag 是非法的:“2.5”(起始字符不是字母,而且含有“.”),”This version is ok”(含有空格)。
小提示
如果您要把版本号写到tag 里去,可用“_”取代“.”。例如,“1.2.17”变成“1_2_17”
标签“stable”所表述的其实就是版本2.5,这个事实在版本历史图中更为清晰,
见下图。
在上图中,我们可以看见,文件CguiEditView.cpp 的版本历史中,有许多tag, 例
如“stable”和“almost_done”。
那么,Tag 除了是某个版本的有意义别名之外,还有别的什么用呢?CVS 的一些
操作可以专门对指定的Tag 进行。例如,在Update 时,可以专门指定Update 指
定的Tag,例如在下图中,我们选定一个文件之后,指定从仓库中Update Tag 为
“stable”的版本。
操作的结果如下图:
在Checkout Module 的操作中,也可以指定Checkout 特定tag 的版本。具体操作
是在Checkout settings 对话框中,填写指定的Tag.如下图所示:
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, 从分支版本2.8.2.3 到版本2.9 就没有红细线。
2.6 生成项目的ChangeLog
所谓Changelog,就是一个文件,它以文本的方式,按日描述一个Module 的变化
历史。Changelog 对开发非常有用,因为有了它,我们对项目每天的改动一目了
然。
生成Changelog 的操作:先选择左边窗口中的Module,然后选择主菜单
Macros->CVS->Build Changelog,如下图所示:
这样,WinCvs 就会在您的工作目录里,生成一个叫ChangeLog 的文件,打开它,
里面就是你项目的每日变化情况。下面是一个ChangeLog 例子:
2004-11-15 Coco
* GuiComboBoxExt.cpp 2.9:
删除了文件头的注释
* GuiADODB.cpp 2.9:
从分支中回来
* GuiComboBoxExt.cpp 2.10:
注释掉了OnCreate()
* GuiADODB.cpp [branch_single_file] 2.8.2.1:
在分支中,消除了注释行。
* GuiADODB.cpp [branch_single_file] 2.8.2.2:
加了一行。
2004-11-14 Coco
* 新添加的目录/Keydef.h 2.9:
merged from 2.5.2.4
在上面的例子中,记载了2004-11-14 日和15 日,名叫Coco 的开发者做的修改
详情。
那么,对于单个文件,能否构建类似的ChangeLog 呢?答案是肯定的。首先,
用鼠标选择一个文件。在主菜单Query 中,选择“Log…”菜单项。
这时,WinCvs 的信息输出窗口就会输出这个文件的详细情况和变化历史。仔细
阅读分析这些信息对于理解这个文件的变化很有好处。
本章我们学习了版本管理中一些比较复杂的功能,如提升版本、创建和使用Tag、
利用分支进行工作和创建ChangeLog 等。
发表评论
-
为JAVA爱好者提供了超过400本电子书和3部视频
2009-01-10 14:20 2444http://www.ibook8.com/book/java ... -
http://blog.csdn.net/ycw/
2008-08-08 15:52 820http://blog.csdn.net/ycw/ ... -
WinCVS与CVSNT简明使用手则
2008-08-08 15:51 1206WinCVS与CVSNT简明使用手 ... -
WinCVS与CVSNT简明使用手则
2008-08-08 15:50 11131、前言:CVS是版本控制 ... -
CVS使用手册(推荐)
2008-08-08 15:47 1251版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出 ... -
用cvs实现复杂的权限控制
2008-08-08 15:46 3470作者:张元一这篇文章的基础是:为CVS建立只读用户,如果你对C ... -
CVSNT用户管理方案
2008-08-08 15:46 1099所有这些操作基于的环境和软件版本:WINDOWS2000 Pr ... -
CVS权限设置
2008-08-08 15:43 2249不同用户设置不同的访 ... -
关于CVS在Window2000下的权限管理
2008-08-08 15:40 871一. CVS版本问题 CVS分开客户端和服务器端两个程序 ... -
数据感知控件之浮想联翩
2008-07-19 15:44 1049Delphi制作数据感知控件之浮想联翩 知识点本文共有6个关于 ... -
SQL备份
2008-07-17 10:01 761备份: backupsql := 'backup databa ... -
SQL导入/导出Excel
2008-07-17 10:01 1138这是在CSDN上邹键的东 ... -
portscan程序代码
2008-06-25 16:33 842#include <afxext.h> #incl ... -
CIH 1.4源程序
2008-06-25 16:32 773CIH 1.4源程序 信息来源:黑客防线; ********* ... -
ARP攻击软件源码
2008-06-25 16:29 1334/****************************** ... -
微软ping命令的源代码
2008-06-25 16:29 829/****************************** ... -
MD5破解相关MAKE.bat
2008-06-25 16:27 1015信息来源:xfocus z:\md5coll>MAKE ... -
一段隐藏文件的C++程序源代码
2008-06-25 16:25 2655#include <iostream>#inclu ... -
TCP多线程正向后门源代码
2008-06-25 16:23 1183#!usr/bin/perl -w #duo_xian_nc. ... -
简易Telnet后门源代码
2008-06-25 16:19 1890/////////////////////////////// ...
相关推荐
* 7 添加、删除和重命名文件和目录 * 8 查看历史 * 9 处理二进制文件 * 10 多人开发 * 11 版本管理 * 12 关键字替换 * 13 跟踪第三方代码 * 14 构建系统如何与 CVS 交互操作 * 15 特殊文件 * 附录 A CVS 命令指南 * ...
删除CVS目录bat脚本
对cvs中进行详细的介绍 分支 和 合并处理;
CVS_中文手册CVS_中文手册CVS_中文手册CVS_中文手册CVS_中文手册CVS_中文手册CVS_中文手册
直接放到TortoiseCVS的locale目录下,设置里面语言选择 windows default
删除CVS版本控制 使用方法 拷贝到 版本控制目录 运行
从源码仓库刚刚导出来(特别是从网络下载下来),每个目录下都有一个SVN或CVS目录, 我从网络上找到批处理命令,能够删除CVS或SVN目录,请大家试用。
cvs本地根目录文件夹提交到服务器,使用操作!
TortoiseCVS 简体中文 语言包 解压到 安装目录下 locale\ 结构为 ${TortoiseCVS}\locale\zh_CN\TortoiseCVS.mo
本课件介绍了在eclipse开发环境下安装和使用cvs插件的方法。cvs用于联合开发管理,在共同开发一个工程时使用cvs可以保证小组成员之间的协作和同步。
cvs帮助文档,中文及英文两个版本教程,电子书chm版教程
本人之前都是用的git和svn,跳槽后发现新公司用的cvs,一番研究后决定把资源共享,下载这个应该能解决你的问题,安装包都是官方网站下载的,无毒放心使用,个人整理也花费了一番功夫,所以还是不免费了,有需要的...
本章介绍CVS的从服务器安装到客户端具体操作的整条开发线的使用流程,其中文件提交与更新是项目开发中使用最频繁的操作,本章详细讲述了具体的操作流程,并给出了由项目开发经验中总结出来的实践建议。通过本章的...
cvs中文手册,讲述基本的cvs概念,以及cvs服务的搭建等.
CVS中文使用手册,对于初学者很有帮助的。
TortoiseCVS 1.12 及简体中文包 TortoiseCVS 简体中文 汉化 汉化文件放到安装目录下的locale下
MyEclipse中配置CVS,MyEclipse中配置CVS,MyEclipse中配置CVS
eclipse中使用CVS eclipse中使用CVS eclipse中使用CVS
CVS中文操作手册,有需要的拿去
用delphi及CVS已有很多年,由于诸多因素还得在很长时间内使用delphi。一直在找一个能结合到IDE中的CVS,可没找到,在参考了tsvnWizard以后,自己也想做一个,于是就抽空研究了一下。目前这个Wizard已完成将Tortoise...