注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

CVS学习  

2010-12-14 18:06:17|  分类: linux服务篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文转自 http://blog.163.com/qimeizhen8808@126/blog/static/1651195182010101025657152/ 出于对作者的尊重,我未做任何改动。

 


昨天在家学习了一下CVS,发现书上讲真的很少,但是都是很精华的命令,思索了一下,写个总结吧,好记忆不如烂笔头嘛!

CVS概述:

       CVSconcurrent version system)版本控制系统,用来记录文件版本,:恢复老版本,比较老版本和新版本之间的不同,以及日志信息等。并保证文件同步。

CVS工作原理:

      文件被储存在中心版本控制系统中,但是这个版本控制系统可能在本地,也可能在远程。

      使用者要遵循一个使用模式:先导出,再编辑,再导入。

      这里说明下:每一个使用者,都会拥有自己的工作目录,用来存放导出的文件。

CVS的局限性:

       CVS储存的文件必须是有规律的(系统链接文件等不能存储的)

CVS工作模式:

1.     建立CVS版本控制器

2.     建立项目(建立好项目后导入CVS中)

3.     开发者使用项目(必须先导出项目)

CVS的日常命令:

Cvs checkout module 导出项目

Cvs update 同步到最新版

Cvs add file 增加文件

Cvs remove file 删除文件

Cvs commit 导入项目

CVS的实验:
   
 一些知识只有通过实验才能对它了解的更加深刻,下面是我做的一个实验。通过实验详细说明下吧:

     

实验要求:

建立一个CVS文件版本库,不同的开发者使用这个库,并修改。

实验环境:

两台PC,均为RHEL5

StationX:192.168.0.3

stationY192.168.0.5

server192.168.0.1

实验步骤

a)      建立CVS版本库:

?         安装CVS一般默认安装,但是也存在没有安装的可能,因此查看服务,

1)       #cat/etc/services|grep cvspserver
如果存在这两行,表明系统自带了CVS

       cvspserver   2401/tcp #CVS client/server operations

cvspserver   2401/udp #CVS client/server operations

2)       查看CVS的启动脚本:

      Vi /etc/xinetd.d/cvs

    # default: off(表明默认没有开启CVS服务)

{

        disable                 = yes(改为no

        port                    = 2401

        socket_type             = stream

        protocol                = tcp

        wait                    = no

        user                    = root (使用者)

        passenv                 = PATH

        server                  = /usr/bin/cvs(可执行文件路径)

        env                     = HOME=/var/cvs

        server_args             = -f --allow-root=/var/cvs pserver(默认库路径,可以指定)

#       bind                    = 127.0.0.1

}

修改后从其xinetd 服务即可

service xinetd restart

?         建立用户和组(stationXstationY)

1)       建立两个组:cvsadmin cvsusers 并指定GID

groupadd -g 6000 cvsadmin

groupadd -g 6001 cvsusers

2)       建立两个用户,并指定属组。

useradd -G cvsusers stan

passwd stan

useradd -G cvsadin,cvsusers olive

passwd olive

?         建立CVS库文件:(stationX—root用户)

从启动脚本中可以看出root用户管理CVS

Mkdir /var/local/cvs

Cvs –d /var/local/cvs init (cvs初始化,这里我指定的目录)

初始化后会在此路径下面创建CVSROOT目录,存放用于CVS管理的一些文件.可以去查看写CVSROOT下的文件,了解内容,可帮助理解。

?         配置CVS服务器(认证方式)

1)       在本地(stationX):分别在Stanolive用户的~/bashrc文件中加入

export CVSROOT= /var/loacl/cvs

2)       在远程(stationY):分别在Stanolive用户的~/bashrc文件中加入

  export CVSROOT=ext192.168.0.3 /var/loacl/cvs

export CVS_SSH = /usr/bin/ssh

?         配置远程无密钥登录(stationY——Stanolive

防止每次访问文件版本库时要输入密码

Ssh-keygen –t dsa (不要输入任何字符)

Ssh-copy-id –i ~/.ssh/id_dsa.pub 192.168.0.3

b)      导入项目

?         CVS库目录中建立项目目录,并修改权限和属组(stationX

Cd  /var/local/cvs

Mkdir dnsfiles

Chgrp –R cvsadmin /var/local/cvs (库的所属组为cvsadmin )

Chgrp –R cvsusers /var/local/cvs/dnsfiles (项目的属组为cvsusers

Chmod g+ws /var/local/cvs /var/local/cvs/dnsfiles 指定权限

 (结合用户和组的权限,表明olive才有导入项目和修改项目的权限,Stan用户只有修改项目的权限)

?         建立项目并导入(stationY――olive

1)       建立存放项目的目录

  Mkdir –p ~/source/{etc,var/named};

  Cd ~/source

  将从server上下载的有关DNS的文件复制到source

例如:

 Mv named.conf etc/

 Mv *.zone var/named/

2)       导入项目

cvs import dnsfiles training start

将会打开一个文件,必须输入一些表明项目内容的语句。

结果:执行后会将所有源文件和项目导入到/var/local/cvs

c)      使用项目:

选择两个用户来使用项目并验证

    选择:StationY----olive用户(验证远程)

stationX----Stan用户(验证本地)

?         远程使用(stationY-----olive用户)

a)       建立工作目录:存放导出文件

Mkdir  ~/cvs-work 注意目录权限哦

Cd ~/cvs-work

Cvs checkout dnsfiles 导出最新版本项目到此工作目录下

b)       编辑文件:随便编辑吧,只要能在导入后,验证即可

c)       导入目录:

Cvs commit –m “olive have change this named.conf ” named.conf

这里可以使用-m参数,不会打开注释文件

最好就是指定文件进行导入。

d)       同步文件:将文件同步到最新版本

Cd ~/cvs-work/dnsfiles/source

Cvs update

最保险的方法是指定同步文件名

例如:

Cvs update named.conf

注意:在每次做修改前,养成一个好的习惯:“先同步,在修改“

?         本地使用(stationX----Stan

a)       使用删除,增加,重命名修改文件

Cd /dnsfiles/var/named/

Mv 192.168.0.X.zone 192.168.0.N.zone

Cvs remove 192.168.0.X.zone

Cvs add 192.168.0.N.zone (CVS中更改了)

b)       导入修改

Cvs commit –m “mv 192.168.0.X.zone to 192.168.0.N.zone”

c)       同步

Cvs update (在当前目录下哦)

实验总结:

a)      其他命令:

1)       修改版本注释:

cvs admin -m 1.3:"write some comments here" file_name

2)       图片和非文本的文档,使用二进制的方式导入(binary files

    cvs add -b new_file.gif
cvs add -b readme.doc

           首先使用cvs checkout cvsroot 建立CVSROOT/cvswrappers

            编辑此文档,增加以下项目

            *.gif –k ‘b’ –m ‘copy’

            *.doc –k ‘b’ –m ‘copy’

            *.gz –k ‘b’ –m ‘copy’

            *.jpg –k ‘b’ –m ‘copy’

            *.mov –k ‘b’ –m ‘copy’

           然后再使用

           cvs add –kb new_file.gif

3)       删除文件和增加文件

    rm file_name

cvs rm file_name
  cvs ci -m "write some comments here"

4)       查看文件的历史

    cvs log file_name
cvs history file_name

5)       查看当前文件不同版本的区别
cvs diff -r1.3 -r1.5 file_name
查看当前文件(可能已经修改了)和库中相应文件的区别
cvs diff file_name

6)       恢复旧版本

cvs update -p -r1.2 file_name >file_name

或者

Rm file

Cvs update –j HEAD –j oldrev file

Cvs commit file (其中HEAD is a tag)

7)       远程认证:

a)       本身的pserver远程认证:not safe!and 需要定义服务器和用户组,用户名,设置密码
格式为:

cvs -d :pserver:cvs_user_name@cvs.server.address:/path/to/cvsroot login

b)       使用ext(基于ssh):上文我使用的方法。

实验扩展:
      
 通过此实验,顺便扩展下其他东西吧!

a)       CVSWEBCVSWEB界面,可以提高文件浏览效率

b)       WinCVS:需要两个客户端:cvs Windows客户端和ssh Windows客户端

下载地址:http://www.wincvs.org/http://www.networksimplicity.com/openssh/

通过次试验发现CVS的内容真的很多,书上将的不是很多,但是绝对是精华的精华,其实自己好像对CVS还是知道的甚少,所以希望有谁对这个很了解的朋友,给点指导,小女子不胜感激!

  评论这张
 
阅读(307)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017