(二)版本控制管理器之CVS(上)
在前一篇《(一)版本控制管理器之发展史》的介绍中,有提到古典时期的CVS,那什么是CVS?CVS特点是什么?怎么个用法?等一系列的问题,虽然这个版本控制管理器早已过时,但大家了解下也不妨,也便于我写文章。下面我会为大家一一介绍CVS这个版本控制,主要分几个大模块进行:
(1)CVS:CVS 是 Concurrent Version System(并行版本系统)的缩写,用于版本管理(我们熟悉的SVN是它的改进、升级版,在后面的文章我会讲述),早在CVS上一代版本,团队开发的项目,并不支持多个用户同时修改同一份文件,若其中一方辛辛苦苦地编写好的程序,被另一个用户覆盖删掉是怎么样的一种感受,想必手已经拿起大刀了吧。所以CVS的出现正好处理了这个问题的发生。CVS是使用“客户端/服务器”(Client/Server)模式来工作的,这也是优秀版本控制系统的发展趋势。那么我们首先要有一台机器充当CVS服务器,在这台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序并由仓库管理员统一管理这些源程序。这样,就好象只有一个人在修改文件一样.避免了冲突,当然必须存在CVS客户端的一方与服务端进行连接,每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交,由 cvs 仓库管理员统一 修改.这样就可以做到跟踪文件变化,冲突控制等等。
(2)软件安装:.
1)CVS服务器:CVSNT
2)CVS客户端:TortoiseCVS
3)安装过程:安装简单,先安装CVS服务器,再安装CVS客户端,默认安装即可,安装后重启电脑。
(3)CVSNT服务器端的配置
1)仓库配置:打开CVSNT的控制面板,运行开始菜单CVSNT菜单文件夹里的“CVSNT Control Panel”即可。如下图
如上图,确保CVSNT的两个服务启动正常,CVS仓库是代码的每个版本和所有相关记录在服务器端的储存地。有些时候又称它为主拷贝(Master Copy),为什么呢,我们将在后面的章节中了解到。在创建CVS仓库之前,我们首先需要新建一个文件夹用于充当仓库。如下图
单击选项卡“Repository configuration”(仓库配置),该文件夹最好不要与程序放在一起,以免万一系统崩溃时破坏数据。然后,点击“开始”->“程序”->“CVS for NT”->“configure server”,出现对话框后选择“Repositories”选项卡,就会出现如下对话框:
如上图,因为是本地计算机上架设CVS服务器,所以填写127.0.0.1,也可以填写为localhost;然后单击“Add”(添加),添加一个仓库,然后再单击“添加”按钮,浏览刚才新建的仓库文件夹I:\mycvsdata如下图:
如上右图,单击“确定”按钮:
如上图,单击“是”,就初始化文件夹作为仓库文件夹了,初始化后,在文件夹里面会生成一个CVSROOT的文件夹,里面有好多的文件和子夹,都是仓库的配置信息。此时仓库配置选项卡如下图:
2)服务器配置:单击“Server Settings(服务器配置)”选项卡,保持默认即可,如图:
3)兼容性配置: 单击“Compatibility Options(兼容性配置)”选项卡,如图:
4)插件配置: 单击“Plugins(插件)”选项卡,如图:
5)高级选项:单击“Advanced(高级)”选项卡,保持默认即可,单击“确定”,完成服务器的配置,如下图:
(4)TortoiseCVS客户端的配置:
1)TortoiseCVS是最佳的CVS客户端软件,使用方便。为了演示配置,先建立一个工程文件夹C:\testprjcvs,然后建立一个文本文件test.txt。如图:
2)添加项目模块,也就是把项目添加到CVS仓库。方法如下,在项目文件夹上点击右键,按下图操作:
3)点击“创建新模块”后,会弹出如图:
4) 如上图,填写完成后,单击“确认”,项目添加到仓库,并提示:
5) 单击确定,完成添加。察看C:\testprjcvs,发现上面有个绿色标记,说明项目已经成功添加到仓库了。分别看项目文件夹、仓库文件夹如下:
6)打开项目文件夹,添加一个文件到仓库,操作过程如下:
7) 出现提示,因为是文本文件,所以单击确定,完成添加,如:
8) 添加后,还需要提交操作,才能将文件加入到CVS,右键单击test.txt的文件,提交,也可以在空白处单击右键,选择提交,提交所有的没有提交的操作。
本篇文章到这里就结束了上半段,以上主要是为大家了解CVS的描述、软件、配置设置等操作,在下半段我会为大家实战下在Visual Studio开发工具如何结合CVS一同开发使用,若本篇文章存在不足,请留言赐教。
A young ilder ~ an old beggar !
(二)版本控制管理器之CVS(上)的更多相关文章
- (三)版本控制管理器之CVS(下)
在上一篇文章<(二)版本控制管理器之CVS(上)>中,我为大家介绍了什么是CVS.CVS的特点.CVS的安装.CVSNT服务器的配置.TortoiseCVS客户端的配置等,本篇文章继续为大 ...
- (四)版本控制管理器之VSS
在上一篇<(二)版本控制管理器值CVS(下)>的文章中,我为大家介绍了CVS这个版本控制器,接下来我继续跟大家分享介绍下一个版本控制管理器--VSS,为什么要说这个版本控制器呢?早已过时的 ...
- Android学习系列(二)布局管理器之线性布局的3种实现方式
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669 LinearLayout是Android控件中的线性布局控件,它包括的子控件 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- 源代码管理工具(上)-SVN基本使用
------------------------------------------------------SVN简介和搭建 ------------------------------------- ...
- 电影管理器之XML存储电影信息数据
电影管理器之XML存储电影信息数据 但凡管理器之类的软件,存储数据是必不可少的.存储数据的话,有几种选择.一是用数据库,把数据存储到数据库里:一是用文本文件,把数据存储到文本文件里:一种是利用XML文 ...
- 编程实战——电影管理器之XML存储电影信息数据
但凡管理器之类的软件,存储数据是必不可少的.存储数据的话,有几种选择.一是用数据库,把数据存储到数据库里:一是用文本文件,把数据存储到文本文件里:一种是利用XML文件,把数据对象转换为XML后,存储到 ...
- 通过TortoiseGit来使用Github或Visual Studio Online版本控制管理
一.前言 关于Git源码不再多阐述,它就是一款开源分布式版本控制工具,它在源码管理领土上目前为止,使用者比例很大,越来越多的人使用该工具来管理项目源码,且相当多的开源的项目都移步到Github中,如: ...
- git版本控制管理实践-4
vcs: version control system 版本控制系统 local vcs, 集中式版本控制系统: centralized vcs; 分布式vcs: distributed vcs Lo ...
随机推荐
- [Swift]LeetCode222. 完全二叉树的节点个数 | Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree ...
- [Swift]LeetCode255.验证二叉搜索树的先序序列 $ Verify Preorder Sequence in Binary Search Tree
Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...
- [Swift]LeetCode937. 重新排列日志文件 | Reorder Log Files
You have an array of logs. Each log is a space delimited string of words. For each log, the first w ...
- 使用Task
http://www.cnblogs.com/Charltsing/p/taskpoolthread.html task默认对线程的调度是逐步增加的,连续多次运行并发线程,会提高占用的线程数,而等若干 ...
- 目标文件去除header一行开头的#号
请按照如下步骤进行配置: --> 打开session的Config Object选项卡,并编辑Custom Properties选项 --> 编辑Custom Properties项目 ...
- javascript 使用小技巧总结
按位取反 ~a 即:返回 -(a+1),会去掉小数点. let a = 3.14; let b = ~a; //b = -(3.14+1) 取整 为-4: let c = ~b; //c = -(-4 ...
- python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用
一.函数的定义 函数的四个组成部分: 函数名. 函数体. 函数返回值. 函数参数 1.概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器 2.定义: def:声明函数的关键词 函数 ...
- Python爬虫入门教程 16-100 500px摄影师社区抓取摄影师数据
写在前面 今天要抓取的网站为 https://500px.me/ ,这是一个摄影社区,在一个摄影社区里面本来应该爬取的是图片信息,可是我发现好像也没啥有意思的,忽然觉得爬取一下这个网站的摄影师更好玩一 ...
- JavaWeb中使用JSON
前言: 最近也是期末了,有好多好多文档和实验报告要交,所以都没啥时间写文,这段时间清闲了,来补一下之前学习时遗漏的一些知识树,话说就没人吐槽这个JSON图标好丑吗? 什么是JSON JSON 指的是 ...
- cache2go - cachetable源码分析
今天我们来看cachetable.go这个源码文件,除了前面介绍过的主要数据结构CacheTable外还有如下2个类型: 下面先看剩下2个类型是怎么定义的: CacheItemPair非常简单,注释一 ...