RedHat Enterprise Linux 5.5之CVS版本控制服务

系统版本:RedHat Enterprise Linux 5.5
 
 
一,什么是CVS?
Concurrent Versions System 版本控制系统
二,CVS主要面对什么状况
1.修改代码时不当心产生了一些bug但当时没有发现,等发现后又须要回到旧版本作修改
2.成员之间在没有协商好前很容易覆盖文件,一些编辑器如Emacs可保证同一个文件不会两次修改,但使用不一样的编辑器保护就没有做用了。
3.每个新版本就是一个新文件生成,但只记录此版本与上个版本之间的变化部分,而不是从新复制占用过多空间。
4.版本间的不一样部分保留在一个文件中。
三,CVS的几个重要概念
1.仓库(repcsitory)
存储所有的版本控制下的文件的备份,一般不能直接访问必须经过cvs命令拷贝到本地修改后在同步回仓库。仓库和工做目录是隔离的。
2.版本(revision)
每一个文件都独立的版本系统,以下
file1_版本1----file1_版本2----file1_版本3
file2_版本1----file2_版本2----file2_版本3
3.分支(branch)
好像file1+file2实现了一个功能成为整个项目的一个分支
修改一个分支不会影响到其余分支
4.冲突(conflct)
彻底的纯文本冲突没法被cvs解决,好比user1修改x=1后上传,而user2在以后的一分钟修改同一行代码成x=2后上传,那么user1依然认为x=1但当user1调用x函数计算x+y时发现返回截获增长了1。这种冲突只能由用户自身沟通解决。
四,CVS如何解决上述问题的
1.采用开发者隔离,每一个人在修改代码前须要先下载代码到本地的工做目录(workspace),修改后在上传
2.采用策略是copy----modify----merge
拷贝到本地----修改代码---上传和之前版本合并内容
 
 
下面咱们来看看cvs服务器的创建过程
1.建立用户和组
咱们的想法是能使用cvs服务器的都在cvs这个组中,cvsroot成为这个组的小管理员,咱们在位每一个编程人员设定本身喜欢的用户名来登陆cvs服务器.
我先创建cvsroot用户和组,并直接把cvsroot加入到cvs组中
我在为一个编程人员建立他喜欢的帐户
-g是直接把fish加入到cvs组中
-M是在创建fish时不产生家目录
 
 
2.查看端口配置状况,看到2401在tcp和udp协议上都有便可
 
 
3.修改启动脚本
vi  /etc/xinetd.d/cvs
由于cvs属于xinetd管理,因此只要重启xinetd服务便可重启cvs
 
 
4.从新启动服务
 
 
 
5.初始化cvs服务
 
6.修改环境变量让系统启动时就能够认识cvs的仓库
vi  /etc/profile
 
7.无需重启马上更新环境变量
 
 
8.为了能让开发人员都能使用仓库注意给权限
 
 
9.默认状况下cvs使用的是系统用户登陆的,也就是/etc/passwd里的用户,为了考虑系统安全,咱们可使用独立的用户管理将用户名和密码保存在/home/cvsroot/CVSROOT/passwd文件中,这样作的好处是你修改了系统帐户的权利在cvs中对应的帐户也跟着改变,而且cvs帐户的密码和系统帐户的密码能够不一致,这样当你登陆cvs后你输入cvs密码,而有效保护了对应的系统帐户密码,由于cvs并无提供相似能够把明文密码转成密文(MD5)的命令因此借用了apache服务的命令来作的.
建立cvs独立passwd命令为   htpasswd  -c  passwd  cvsroot (/home/cvsroot/CVSROOT下执行)
固然你也能够映射其余用户,注意的是必须保证/home/cvsroot/CVSROOT有权限能被其余用户所访问
看看../CVSROOT/passwd文件的样子
 
 
10.如今有个新问题就是若是/home/cvsroot/CVSROOT/passwd文件中没有这个用户,cvs依然会去询问系统的/etc/passwd是否有这个用户及请求验证,那这样最后问来问去又须要输入系统的帐户和密码仍是有风险.因此我干脆就算在CVSROOT/passwd下找不到这个用户也不去问系统有没有这个用户.
vi /home/cvsroot/CVSROOT/config
此时咱们能够在/etc/passwd和/etc/shadow里吧关于cvsroot和fish的信息删除掉.我已经悄悄的干掉他们连个了.
 
11.如今你能够启动cvs服务了
 
12.咱们看看服务启动后验证一下,端口号已经开启
 
 
13.如今咱们就能够用刚才的fish开发帐户登陆测试一下了
 
 
14.你能够配置用户对仓库文件中的权限,readers文件记录具备"只读"权限的用户,writers文件记录拥有读写权限的用户,readers文件比writers优先,也就是说出如今readers中的用户将会是只读的,无论writers文件中是否存在该用户
 
 
 
 
********************************************
另一种创建CVSROOT/passwd文件的方式,参考一下
 groupadd cvs
 useradd -g cvs -M test1
 passwd test1
之后就用test1来登陆cvs
 cp /etc/shadow  /home/cvsroot/CVSROOT/passwd
 chmod 0644 /home/cvsroot/CVSROOT/passwd
 vi /home/cvsroot/CVSROOT/passwd
只保留cvsroot和test1的记录,形式以下
 cvsroot:$123456789:cvsroot
 test1:$12345sdjkfe:test1
而后再系统中删除掉test1和cvsroot  vi /etc/passwd和 /etc/shadow
**********************************************
 
期待能对开发人员之间的合做有所帮助.
相关文章
相关标签/搜索