(三)版本控制管理器之CVS(下)
在上一篇文章《(二)版本控制管理器之CVS(上)》中,我为大家介绍了什么是CVS、CVS的特点、CVS的安装、CVSNT服务器的配置、TortoiseCVS客户端的配置等,本篇文章继续为大家分享关于CVS的知识,Visual Studio 开发工具如何结合CVS一同开发使用。
一讲到微软这家大牛公司,就想到它得意开发集成工具的作品:Visual Studio,很多开发团队或公司在使用Visual Studio做项目开发的时候很自然的使用Visual SourceSafe(VSS)作为其源码管理工具,在后面的文章我会大家一一讲解。
(1)建立Visual Studio.Net工程并加入到CVS中
与SourceSafe相比,CVS中的Repository相当于SourceSafe中的Database,CVS中的Module与客户端的目录结构一一对应。因此,Visual Studio.Net以目录为单位,将Solution保存在CVS对应Modules中。
A)建立新的Visual Studio.Net工程(任意),Solution视图如下所示:

此时VS.Net中有一个名为CVSSolution的解决方案(Solution)以及在CVSSolution下有一个名为GraphicsPath1项目(Project)。
B)将CVSSolution加入CVS,右击Solution视图,在弹出菜单中选择“Add Solution to Source Control…”,将弹出以下对话框:

CVS的远程访问一般使用pserver协议,CVSROOT的格式如下:
:pserver:username:pasword@hostname:repository
此处的Repository选择了图二所示的MyFirstRepository,点击Check按钮测试服务器连接,此时将弹出CVS Login对话框,提示输入密码(当然密码也可以在CVSROOT中指定):

此时,如果连接成功,则会弹出以下信息对话框,否则会弹出信息:

(2)TortoiseCVS使用手册
1.设置工作目录:
在目录“D:repository”下,存放三个配置库。配置库的名称分别为“cvstrain”、“cvstrain1”、“cvstrain2”。则在“D:repository”下分别新建“cvstrain”、“cvstrain1”、“cvstrain2”三个目录。如图:

2.检出配置库:
在工作目录下,鼠标左键选中检出的配置库所对应的目录“cvstrain”,点击鼠标右键选择“CVS取出(K)…”检出配置库内容。如图:

弹出“取出模块”对话框。如图:

在“取出模块”对话框的选项中:
“CVSROOT:”填入mail中的CVSROOT信息;
“模块:”填入“.”;
配置库中的文件将开始下载到本地目录“D:repositorycvstrain”下。检出配置库完成,如图:

配置库检出后文件夹图标变为
。
3.更新配置库:
鼠标左键选中目录“cvstrain”,点击鼠标右键,选择“CVS更新(U)”,如图:

4.修改、提交文件:
文件修改后文件图标显示为
,在修改的文件上鼠标右键选择“CVS提交(C)…”。如图:

在“提交”对话框中的“注释”写一些简洁的说明文字,点击“确认”按钮。添加、提交文件完成。如图:

文件提交成功后文件图标显示为
。
5.添加、提交文件:
不在配置库中的文件图标显示为
在待添加的文件上鼠标右键选择“CVS添加(A)…”。如图:

在“添加”对话框中确认添加的文件格式是否正确,点击“确认”按钮添加。如图:

注意
添加有二种方式:
1.以文本文件/ASCII方式添加。
2.以二进制方式添加。
如添加文件时需要修改文件格式,在文件上点击右键,选择添加的方式。如图:

文件添加后图标显示为
。
6.删除、提交文件:
在待删除文件“test1.txt”上鼠标右键选择“CVS”→“删除(R)”。如图:

在本地目录空白处鼠标右键选择“CVS提交(C)…”。如图:


7.删除目录:
TortoiseCVS界面上并没有这样的功能。不过,可以在CVS服务器仓库中手动删除目录。若需要删除目录,请与SCM工程师联系。
8.创建标签:
在待创建标签的文件上鼠标右键选择“CVS”→“标签(T)”。如图:

弹出“标签”对话框中,选择“创建新标签”,填写要添加的tag为“build-abc”。点击“确认”按钮。如图:

查看文件标签,在文件上右键选择“CVS” →“版本分支图(G)…”。如图:


9.删除标签:
在待删除标签的文件鼠标右键选择“CVS”→“标签(T)”。如图:

弹出“标签”对话框中,选择“删除已有的标签”,点击“确认”按钮。如图:


10.查看历史版本:
在待查看文件上鼠标右键选择“CVS” →“版本分支图(G)…”。如图:

在“版本分支图”中查看文件历史版本。如图:

附:文件图标说明

链接文章:https://my.oschina.net/tadcat/blog/150033
本篇文章到这里就基本对CVS这个版本控制管理器的讲述完了,想必大家都对CVS都不会陌生了吧,其实它的操作跟SVN相差不了多少,在下一篇文章中我们继续了解下一个版本控制器(VSS),我将在这里带领大家了解版本控制的奥秘,前提是大家真心跟随本人走进那个领域,若本篇文章存在不足,请留言赐教。
A young ilder ~ an old beggar !
(三)版本控制管理器之CVS(下)的更多相关文章
- (二)版本控制管理器之CVS(上)
在前一篇<(一)版本控制管理器之发展史>的介绍中,有提到古典时期的CVS,那什么是CVS?CVS特点是什么?怎么个用法?等一系列的问题,虽然这个版本控制管理器早已过时,但大家了解下也不妨, ...
- (四)版本控制管理器之VSS
在上一篇<(二)版本控制管理器值CVS(下)>的文章中,我为大家介绍了CVS这个版本控制器,接下来我继续跟大家分享介绍下一个版本控制管理器--VSS,为什么要说这个版本控制器呢?早已过时的 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...
- 三十三、Java图形化界面设计——布局管理器之null布局(空布局)
摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...
- Swing-布局管理器之GridLayout(网格布局)-入门
注:本文内容源自于三十一.Java图形化界面设计——布局管理器之GridLayout(网格布局),笔者在学习过程中根据自身理解修改了部分代码. 网格布局特点: l 使容器中的各组件呈M行×N列的网格 ...
- 通过TortoiseGit来使用Github或Visual Studio Online版本控制管理
一.前言 关于Git源码不再多阐述,它就是一款开源分布式版本控制工具,它在源码管理领土上目前为止,使用者比例很大,越来越多的人使用该工具来管理项目源码,且相当多的开源的项目都移步到Github中,如: ...
- 转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址
http://blog.csdn.net/liujun13579/article/details/7771191 前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以 ...
- Java图形化界面设计——布局管理器之FlowLayout(流式布局)
一.布局管理器所属类包 所属类包 布局管理器名称 说明 Java.awt FlowLayout(流式布局) 组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列 Bord ...
随机推荐
- ionic3 实现扫码功能
ionic3 通过插件phonegap-plugin-barcodescanner,调用机器硬件摄像头实现扫码功能. 首先当然先了解下 phonegap-plugin-barcodescanner,这 ...
- Redis(1)---五种数据结构
五种数据结构 一.全局key操作 --删 flushdb --清空当前选择的数据库 del mykey mykey2 --删除了两个 Keys --改 --将当前数据库中的 mysetkey 键移入到 ...
- VueJs(14)---理解Vuex
理解Vuex 一.Vuex 是什么? 首先我们来分析一种实际开发中用vue.js的场景,你有n个组件,当你改变一个组件数据的时候需要同时改变其它n个组件的数据,那么我想你可能会对 vue 组件之间的通 ...
- Spring系列之手写注解与配置文件的解析
目录 Spring系列之IOC的原理及手动实现 Spring系列之DI的原理及手动实现 Spring系列之AOP的原理及手动实现 引入 在前面我们已经完成了IOC,DI,AOP的实现,基本的功能都已经 ...
- 正则表达式的一些探索(偏JavaScript)
简单的探索下正则表达式的相关知识,首先先了解下正则表达式的引擎和匹配过程区别,再试着掌握如何在场景中编写正则表达式,再然后探索下根据上文已知的原理和编写过程怎么去优化正则表达式,最后给出一些js里正则 ...
- 解决Unity中模型部件的MeshCollider不随动画一起运动的问题
Unity的3d游戏开发中,经常遇到需要将模型的某一部分(比如武器),单独做碰撞处理的情况. 导入模型后,给武器部分添加MeshCollider,MeshCollider的Mesh通常包含在模型里,如 ...
- [NewLife.XCode]增删改查入门
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
- 使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
上篇我们说到了基于EFCore的基础扩展,这篇我们讲解下基于实体结合拉姆达表达式的自定义更新以及删除数据. 先说下原理:其实通过实体以及拉姆达表达式生成SQL语句去执行 第一种更新扩展: 自定义更新字 ...
- 高性能MySQL笔记
锁粒度:表锁.行级锁 表锁锁定整张表 隔离级别: 未提交读:事务中的修改,即使没有提交,对其他事务也是可见的.事务可以读取未提交的数据,也被称为脏读.实际应用中比较少用 提交读:一个事务提交之前,所做 ...
- Keras入门(二)模型的保存、读取及加载
本文将会介绍如何利用Keras来实现模型的保存.读取以及加载. 本文使用的模型为解决IRIS数据集的多分类问题而设计的深度神经网络(DNN)模型,模型的结构示意图如下: 具体的模型参数可以参考文章 ...