lyjinger软件使用之:CVS服务器配置和使用
说明:因为本人使用vi作编辑器并设置了显示行号,以下相关文件内容前面的编号请自行略去。
CVS服务配置:
1、在/etc/xinetd.d目录下创建文件cvspserver,内容如下:
1 # default: on
2 # description: The cvs server
3 service cvspserver
4 {
5 disable = no
6 socket_type = stream
7 protocol = tcp
8 wait = no
9 user = root
10 server = /usr/bin/cvs
11 server_args = -f --allow-root=/cvsroot pserver
12 log_on_success += USERID
13 log_on_failure += USERID
14 }
2、确认/etc/services文件中有以下两行,没有则手动添加:
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
3、重启xinetd服务
server xinetd restart
4、确认CVS服务已开启监听
netstat -l
如果输出结果有以下这行则CVS启动成功
tcp 0 0 *:cvspserver *:* LISTEN
CVS用户管理:
1、添加用户组cvs,用户cvsroot、cvspub
groupadd cvs
useradd cvsroot -g cvs
useradd cvspub -g cvs
2、将其他用户加入cvs用户组,假设当前系统中已存在一个用户ly
gpasswd -a ly cvs
CVS数据仓库:
1、创建数据仓库,假设将数据仓库目录设为/cvsroot
su
mkdir /cvsroot
chown cvsroot cvsroot
chgrp cvs cvsroot
chmod 770 /cvsroot
chmod g+s /cvsroot
2、初始化数据仓库
cvs -d /cvsroot init
CVS访问方式:
一、:ext:方式:假设用户ly访问本地CVS
1、修改~/.bash_profile,增加两行:
18 export CVS_RSH=/usr/bin/ssh
19 export CVSROOT=:ext:ly@localhost:/cvsroot
2、使配置生效
source .bash_profile
3、测试访问
cvs checkout CVSROOT
根据提示输入密码,成功会在本地生成CVSROOT目录
二、:pserver:方式:假设用户cvspub访问192.168.1.8CVS
1、修改~/.bash_profile,增加一行:
20 export CVSROOT=:pserver:cvspub@192.168.1.8:/cvsroot
2、使配置生效
source .bash_profile
3、测试访问
cvs login
根据提示输入密码
cvs checkout CVSROOT
成功会在本地生成CVSROOT目录
CVS日常使用:
1、创建新模块,假设将/home/ly/test/hello工程(包括main.c、Makefile)导入CVS
cd /home/ly/test/cvs_test
cvs import -m "import hello project." cvs_test lyjinger start
2、获取新模块
我们可以先删除原先的hello工程目录
cd ..
rm -rf hello
cvs checkout cvs_test
3、获取最新修改,假设main.c被其他人修改后提交
cvs update main.c
4、提交修改,提交自己修改的main.c
cvs commit -m "your modified message." main.c
5、比较本地拷贝与库中文件,比较main.c
cvs diff main.c
比较本地拷贝与库中指定修订版,假设比较main.c与库中main.c的1.1修订版
cvs diff -r 1.1 main.c
比较库中不同的修订版,假设比较main.c库中的1.1与1.3修订版
cvs diff -r 1.1 -r 1.3 main.c
6、显示指定文件所有修订版的日志信息,显示main.c日志
cvs log main.c
7、显示指定文件状态:本地修改还是库中更新,显示main.c状态
cvs status main.c
8、解决冲突
当多个开发人员同时修改一个文件时引起冲突,发生冲突后你需要打开有问题的文件,搜索以<<<<<<<开始的行
<<<<<<<
你的修改
=======
库中合并的代码
>>>>>>>修订版
判断代码,删除冲突标记,提交文件,解决冲突
9、标记标签,假设将main.c Makefile test标记为发行版1.0
cvs tag release1-0 main.c Makefile test
以后你可以使用
cvs checkout -r release1-0 cvs_test
检出该发行版
查看文件标签
cvs status -v main.c
10、向模块库中添加新文件,假设添加func.c到工程hello中
cvs add func.c
cvs commit
向模块库中添加新目录,假设添加modules目录到工程hello中
cd modules
cvs import -m "add modules to hello project" hello/modules lyjinger start
11、从模块库中删除文件,假设从工程hello中删除func.c
cvs remove func.c
cvs commit
从模块库中删除目录,假设从工程hello中删除目录modules
首先需要删除库中modules目录下所有文件,然后
cvs update hello
cvs默认删除空目录
12、模块分支
前面我们已经将hello工程发行为版本1.0,现在开始版本2.0的工作
升级版本号
cvs commit -m "update project hello to ver2.0." -r 2.0
此时客户反馈1.0版本有一个bug需要立即修改,我们只好停下2.0的工作,对1.0进行修正
首先删除本地拷贝
cvs release -d hello
在库中创建版本1.0的分支并检出到本地
cvs rtag -b -r release1-0 release1-0-patch hello
cvs checkout -r release1-0-patch hello
现在开始在版本1.0分支上工作,修正bug确认无误后,将分支合并
首先删除本地分支的拷贝
cvs release -d hello
将版本1.0的分支合并到版本1.0库中
cvs checkout -j relase1-0-patch hello
解决冲突后将合并后的文件提交到库
cvs commit
说明:因为本人使用vi作编辑器并设置了显示行号,以下相关文件内容前面的编号请自行略去。
CVS服务配置:
1、在/etc/xinetd.d目录下创建文件cvspserver,内容如下:
1 # default: on
2 # description: The cvs server
3 service cvspserver
4 {
5 disable = no
6 socket_type = stream
7 protocol = tcp
8 wait = no
9 user = root
10 server = /usr/bin/cvs
11 server_args = -f --allow-root=/cvsroot pserver
12 log_on_success += USERID
13 log_on_failure += USERID
14 }
2、确认/etc/services文件中有以下两行,没有则手动添加:
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
3、重启xinetd服务
server xinetd restart
4、确认CVS服务已开启监听
netstat -l
如果输出结果有以下这行则CVS启动成功
tcp 0 0 *:cvspserver *:* LISTEN
CVS用户管理:
1、添加用户组cvs,用户cvsroot、cvspub
groupadd cvs
useradd cvsroot -g cvs
useradd cvspub -g cvs
2、将其他用户加入cvs用户组,假设当前系统中已存在一个用户ly
gpasswd -a ly cvs
CVS数据仓库:
1、创建数据仓库,假设将数据仓库目录设为/cvsroot
su
mkdir /cvsroot
chown cvsroot cvsroot
chgrp cvs cvsroot
chmod 770 /cvsroot
chmod g+s /cvsroot
2、初始化数据仓库
cvs -d /cvsroot init
CVS访问方式:
一、:ext:方式:假设用户ly访问本地CVS
1、修改~/.bash_profile,增加两行:
18 export CVS_RSH=/usr/bin/ssh
19 export CVSROOT=:ext:ly@localhost:/cvsroot
2、使配置生效
source .bash_profile
3、测试访问
cvs checkout CVSROOT
根据提示输入密码,成功会在本地生成CVSROOT目录
二、:pserver:方式:假设用户cvspub访问192.168.1.8CVS
1、修改~/.bash_profile,增加一行:
20 export CVSROOT=:pserver:cvspub@192.168.1.8:/cvsroot
2、使配置生效
source .bash_profile
3、测试访问
cvs login
根据提示输入密码
cvs checkout CVSROOT
成功会在本地生成CVSROOT目录
CVS日常使用:
1、创建新模块,假设将/home/ly/test/hello工程(包括main.c、Makefile)导入CVS
cd /home/ly/test/cvs_test
cvs import -m "import hello project." cvs_test lyjinger start
2、获取新模块
我们可以先删除原先的hello工程目录
cd ..
rm -rf hello
cvs checkout cvs_test
3、获取最新修改,假设main.c被其他人修改后提交
cvs update main.c
4、提交修改,提交自己修改的main.c
cvs commit -m "your modified message." main.c
5、比较本地拷贝与库中文件,比较main.c
cvs diff main.c
比较本地拷贝与库中指定修订版,假设比较main.c与库中main.c的1.1修订版
cvs diff -r 1.1 main.c
比较库中不同的修订版,假设比较main.c库中的1.1与1.3修订版
cvs diff -r 1.1 -r 1.3 main.c
6、显示指定文件所有修订版的日志信息,显示main.c日志
cvs log main.c
7、显示指定文件状态:本地修改还是库中更新,显示main.c状态
cvs status main.c
8、解决冲突
当多个开发人员同时修改一个文件时引起冲突,发生冲突后你需要打开有问题的文件,搜索以<<<<<<<开始的行
<<<<<<<
你的修改
=======
库中合并的代码
>>>>>>>修订版
判断代码,删除冲突标记,提交文件,解决冲突
9、标记标签,假设将main.c Makefile test标记为发行版1.0
cvs tag release1-0 main.c Makefile test
以后你可以使用
cvs checkout -r release1-0 cvs_test
检出该发行版
查看文件标签
cvs status -v main.c
10、向模块库中添加新文件,假设添加func.c到工程hello中
cvs add func.c
cvs commit
向模块库中添加新目录,假设添加modules目录到工程hello中
cd modules
cvs import -m "add modules to hello project" hello/modules lyjinger start
11、从模块库中删除文件,假设从工程hello中删除func.c
cvs remove func.c
cvs commit
从模块库中删除目录,假设从工程hello中删除目录modules
首先需要删除库中modules目录下所有文件,然后
cvs update hello
cvs默认删除空目录
12、模块分支
前面我们已经将hello工程发行为版本1.0,现在开始版本2.0的工作
升级版本号
cvs commit -m "update project hello to ver2.0." -r 2.0
此时客户反馈1.0版本有一个bug需要立即修改,我们只好停下2.0的工作,对1.0进行修正
首先删除本地拷贝
cvs release -d hello
在库中创建版本1.0的分支并检出到本地
cvs rtag -b -r release1-0 release1-0-patch hello
cvs checkout -r release1-0-patch hello
现在开始在版本1.0分支上工作,修正bug确认无误后,将分支合并
首先删除本地分支的拷贝
cvs release -d hello
将版本1.0的分支合并到版本1.0库中
cvs checkout -j relase1-0-patch hello
解决冲突后将合并后的文件提交到库
cvs commit