linux cvs 安装和配置

 

一,什么是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服务器的建立过程
RedHat Enterprise Linux 5 自动安装了cvs。
查看是否安装方式:
rpm -qa | grep cvs

如果出现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。

如何xinetd未安装,先安装。rpm -ivh xinetd-xxx.rpm 。
在linux光盘的Server中可找到,这是最简单的安装方式了。

 
 
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.我们看看服务启动后验证一下,端口号已经开启
或者使用 netstat -l | grep cvs
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
**********************************************
 
cvs 操作参考文档
登录方式:
cvs -d :pserver:test@localhost:/home/cvsroot login

 

 




test 在/home/cvsroot/CVSROOT/passwd 中定义。

如: test:xxxxx:cvsroot


问题总结:

1. 其中cvsroot为组,最好定义一个cvsroot帐号. Eclipse 连接时没建立报 no system user.

2.client 访问CVS时连接不上。

检查防火墙 /sbin/iptables -L&line;grep cvs

 

如果看到

ACCEPT tcp -- anywhere anywhere tcp dpt:cvspserver


 

说明端口已经打开,否则请打开防火墙2401端口

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 2401 -j ACCEPT

/sbin/service iptables save

3.如果提示#cvs.lock): Permission denied之类的错误

修改 CVSROOT/config 文件

把LockDir=/var/lock/cvs 前面的#号去除,然后用root更改一下cvs目录的权限即可

chmod 777 /var/lock/cvs -R

4.

打开cvs客户端,我这里使用的是Eclipse自带的

connetion type 为 pserver

user  yukang

password  

host  你的主机名

Repository path:  /home/cvsroot

如果提示unrecognized auth response from 你的主机名: cvs pserver: cannot open /home/cvsroot/CVSROOT/config: Permission denied

请 执行

vi /etc/selinux/config

修改SELINUX=disabled

保存退出,重启电脑

 

http://www.blogjava.net/keweibo/articles/311216.html


http://linuxsafe.blog.51cto.com/438124/498122



http://hackang.iteye.com/blog/234000

 

 

group : groupcvs

user: cvsroot

password :cvsroot

 

[root@bogon ~]# useradd -g groupcvs -d /home/cvsroot cvsroot

[root@bogon ~]# cat /etc/passwd | grep cvsroot

cvsroot:x:543:502::/home/cvsroot:/bin/bash

[root@bogon ~]# chmod u+x /home/cvsroot

[root@bogon ~]# passwd cvsroot

Changing password for user cvsroot.

New UNIX password:

BAD PASSWORD: it is based on your username

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

 

[cvsroot@bogon root]$ cvs -d /home/cvsroot init

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值