分类: 系统运维
2013-05-08 10:37:39
CVS 是 Concurrent Version System(并行版本体系 )的缩写,用于版本管理 .假如 人人 曾经参加 过多人协作开拓的项目,人人 确定 有如许 的悲凉 经验 :由于多小我私家 同时批改同一个文件, 本身 辛辛劳 苦批改的措施被别人彻底删除了.其它,假如 你的软件/措施已经公布 了三个版本, 而这时间 用户必要 你批改第二个版本的对象,大概 你会由于 只生涯了最新版本而痛哭流涕。尚有 就是你对措施做了一些批改,但是批改很少,你只想给远方的同事发一个两个版本之间的区别 文件,如许 可以免于邮箱不足大,网速太慢之类的题目 .为了解 决类似如许 的题目 ,以及诸如天生 补丁文件,汗青 版本批改等,一帮黑客(褒义)在原来 Unix 体系 里很成熟的 SCCS 和 RCS 的根本 上,开拓了 CVS。(SCCS:Source Code Control System,RCS:Revision Control System)。 CVS 的根本 事变 思绪 是如许 的:在一台做事器上成立 一个客栈,客栈里可以寄放 很多 差别 项方针源措施。由客栈管理 员同一 管理 这些源措施.如许 ,就好象只有一小我私家 在批改文件一样.停止了斗嘴.每个用户在应用 客栈之前,起首 要把客栈里的项目文件下载到内地 。用户做的任何批改起首 都是在内地 举办,然后用 cvs 下令 举办提交,由 cvs 客栈管理 员同一 批改.如许 就可以做到跟踪文件变动,斗嘴独霸等等. 由于 CVS 是典范 的 C/S 结构的软件,因此它也分成做事器端和客户端两部分 。不外 大多数CVS 软件都把它们合二为一了。我们这里就判别 从做事器和客户端的角度讨论cvs的应用 。 Cvs做事器安装 起首 确保体系 安装有cvs: [root@mail xinetd.d]# rpm -qa|grep cvs cvs-1.11.1p1-3 假如 下令 输出类似于上面的输出则阐发 体系 已经安装有cvs,不然 就必要 从安装光盘中安装cvs的rpm包。 一 创建 CVS属主用户: # useradd -d /cvsroot cvs # chmod 771 /cv sroot 二、成立 CVS客栈(初始化cvs) # su cvs $ cvs -d /cvsroot init $exit # 四、启动cvs做事器 在/etc/xinetd.d/目次 下创建 文件cvspserver,内容如下: # default: on # description: The cvs server sessions; service cvspserver { socket_type = stream wait = no user = root server = /usr/bin/cvs server_args = -f --allow-root=/cvsroot pserver log_on_failure += USERID only_from = 192.168.0.0/24 } 此中 only_from是用来限建造访 的,可以按照 实际 情况不要可能批改。 批改该文件权限: # chmod 644 cvspserver 然后重新启动xinetd: # /etc/rc.d/init.d/xined restart 然后观察 cvs做事器是否已经运行: [root@mail xinetd.d]# netstat -lnp|grep 2401 tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd 则阐发 cvs做事器已经运行。 五、创建 用来拜访cvs的用户 前面创建 的cvs用户是cvs客栈管理 用户,而为了让用户拜访则还必要 一个拜访用户: # useradd cvspub # usemod -G cvs cvspub 这里添加了一个用户cvspub,并且 将该用户添加到cvs组中。 六、管理 cvs做事器 管理 cvs 做事器.做事器可以用了,如今 人人 最关怀 的就是怎样 管理 做事器,比如 ,我想让一些人有读和/或写 CVS 客栈的权限,但是不想给它体系 权限怎么办呢?不难,cvs初始化收场 以后,在管理 员用户(这里是cvs用户)的主目次 里有一个 CVSROOT 目次 ,这个目次 里有三个设置 文件:passwd, readers, writers。我们可以通过设置这三个文件来设置 CVS 做事器,下面判别 先容 这几个文件的作用: passwd:cvs 用户的用户列表文件,它的技俩很象 shadow 文件: {cvs 用户名}:[加密的口令]:[等效体系 用户名] 假如 你渴望 一个用户只是 cvs 用户,而不是体系 用户,那么你就要设置这个文件,方才 安装完之后这个文件也许不存在,你必要 以cvs管理 员身份(su cvs)用户手工创建 ,固然 要服从 上面技俩; 第二个字段是该用户的加密口令,就是用 crypt (3) 加密的,你可以本身 写一个措施来做加密,也可以用两个偷懒的行动 :先创建 一个体系 用户,名字和 cvs 用户一样,口令就是预备给它的 cvs 用户口令,创建 完之后从 /etc/shadow 把该用户第二个字段拷贝过来,然后 再把这个用户删除.这个行动 敷衍 数量 少的用户比拟 利便 ,人一多就不适宜 了,并且 尚有 斗嘴条件(race condition)的安详隐患,还要 root 权限,着实 不怎么样,不外 权益之计罢了 ;其它一个行动 就是操作apche的htpasswd下令 创建 passwd用户,添加用户只必要 htpasswd passwd username即可添加用户到passwd文件中,不外 必要 在文件中对应行的末了 添加一个":"冒号和对应的等效体系 用户名;最好的就是本身 编写一个措施潦攀? 刺焐? 这个passwd文件了。 第三个字段就是等效体系 用户名,实际 上就是赋与一个 cvs 用户一个等效的体系 用户的权限,看下面的例子你就明白 它的功能了。 readers:有 cvs 读权限的用户列表文件,就是一个一维列表。在这个文件中的用户对 cvs 只有读权限。 writers:有 cvs 写权限的用户的列表文件,和 readers 一样,是一个一维列表。在这个文件中的用户对 cvs 有写权限。 上面三个文件在缺省安装的时间 也许都不存在,必要 我们本身 创建 ,好吧,如今 照样 让我们用一个例子来解说吧.假设我们有下面几个用户必要 应用 cvs: cvsuser1, cvsuser2, henry, betty, anonymous 此中 laser 和 gumpwu 是体系 用户,而henry, betty, anonymous 我们都不想给体系 用户权限,并且 betty 和 anonymous 都是只读用户,并且 anonymous 更是连口令都没有。 然后编辑 cvs 管理 员家目次 里 CVSROOT/passwd 文件,介入下面几行: laser:$xxefajfka;faffa33:cvspub gumpwu:$ajfaal;323r0ofeeanv:cvspub henry:$fajkdpaieje:cvspub betty:fjkal;ffjieinfn/:cvspub anonymous::cvspub 留意 :上面的第二个字段(离开 符为 :)是密文口令,你要用措施可能用我的土办法天生 。 编辑 readers 文件,介入下面几行: anonymous betty 编辑 writer 文件,介入下面几行: laser gumpwu henry 如许 就 ok 了,你再用几个用户判别 登岸 测试,就会创造统统 都 ok 了。这内里 的原理和阐发 我想就不多说了,着实 很大略 ,和体系 管理 用户的观念 是一样的。 七、成立 新的CVS项目 一样平常 我们都已经有一个或多个项目了,如许 我们可以用下面步调 天生 一个新的CVS项目。 将一个工程文件置于CVs中举办版本独霸,在CVS 术语中称作导入(import)。从名字上就可以看出,在导入前必要 为此作些预备事变 。 输入操纵 的根本 哀求 是有个"干净"的目次 结构。"干净"的意思是不必要 版本独霸的文件都被移走了(如编译天生 的文件,备份文件等等)。假如 工程已经起头一段工夫了,这就显得很重要 。在目次 中大概 有些是不操持 将其置于版本独霸下的文件,但是又想将他们放在这里,这种情况下,你要在输入之前将它们移走,然后再移返来 。 留意 的是CVS 认为 空目次 是不存在的。假如 想增进一个既不包孕 文件又不包孕 子目次 的目次 ,必要 在其下创建 一个哑文件。提议你创建 一个名为 README.txt 的文件,其内容为对目次 的扼要 阐发 。 进入到已有项方针目次 ,比如 叫 cvstest: $cd cvstest 运行下令 将项目文件导入到cvs客栈中: $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start 阐发 :import 是cvs的下令 之一,表示向cvs客栈输入项目文件. -m参数后头的字串是刻画 文本,对项目举办刻画 ,假如 不加 -m 参数,那么cvs会主动 运行一个编辑 器(一样平常 是vi,但是可以通过批改环境 变量EDITOR来改成你喜好 用的编辑 器)让你输入信息,cvstest 是项目名称(实际 上是客栈名,在CVS做事器上会存储在以这个名字定名 的客栈里) v_0_0_1是这个分支的总符号 .没啥用(或曰不常用) start 是每次 import 标识文件的输入条理 的符号 ,没啥用。 如许 我们就成立 了一个CVS客栈了,然后,我们可以把这个测试项方针文件删除,尝试怎样 从客栈获取文件这会在后头的客户端文章举办阐发 。 在Win2k上安装和应用 CVS 1.预备有关软件: 从 下载做事器 cvs-1.10.8NT.exe.zip 从 下载客户端 WinCvs11b16.zip 用winzip把cvs-1.10.8NT.exe.zip解压到d:cvs。 解压并安装wincvs. 2.把路径 d:cvs 加到path环境 变量中。 具体 行动 :点选"我的",单击右键,选属性,点环境 变量按钮。 3.成立 CVS存储目次 。 打开一个dos窗口,键入"cvs -d :local:d:cvsroot init",然后你会创造d:cvs下面多了一个root子目次 。 4.注册CVS做事 在dos窗口中,键入"ntservice -i d:cvsroot",屏幕表现 "CVS NT Service Installed successfully",打开独霸面板中的做事,你会创造多了一个"CVS NT Service"做事 用"net start cvs"启动cvs做事。 用"net stop cvs"封闭 cvs做事。 5.设置暗码 新建一个空缺 的passwd文件,放到d:cvsrootcvsroot目次 下。用pwgen.exe天生 暗码 。把用户名和暗码 写到passwd文件,譬喻:test:OuIgxgsUZH48g 6.应用 wincvs 选Admin->Perferences,设CVSROOT为":pserver:test@server:d:cvsroot",server为作为做事器的打定机的名称。test为用户名。 7.登岸 选Admin->login,输入暗码 登岸 。 8.导入模块 假设要管理 的代码已经存在于c:source目次 ,选弹出菜单上的import module,选择目次 c:source,输入模块名"test",wincvs就会把该目次 导入到模块test中。 9.导出模块 选Create->checkout module,输入模块名和相应的目次 就可以了。 10。批改文件 选中要批改的文件,点批改钮(笔图标)。然后批改文件,末了 选弹出菜单上的commit selection,批改就被提交了。 CVS NT做事器安装指南 下载所在:; 运行 cvsnt_1.11.1.2.exe 点两次“Next”跳过“Welcome”界面起头安装 点“Yes”经受 License 点“Next”用默认的Typical安装 选“Yes”并点“Finish”,重新启动 到桌面,在“我的”按右键,点“属性” 点“高等 ”,点“环境 变量” 选择“体系 变量”中的Path,点“编辑 ” 在变量值后加“;C:Program FilesCVS for NT”(引号不要介入) 点“断定 ” 再“断定 ” 进入独霸面板,双击“CVS for NT” 点“Install”安装CVSNT做事 Install按钮会变无效,Uninstall变有效 点“Add”,输入“d:cvsroot”,点“OK” 会提问是否创建 目次 ,回答 “是” 点“Start”启动CVSNT做事 在d:cvsrootCVSROOT目次 下创建 一个文件名为passwd的文件(没有扩张名) (怎么创建 没有扩张名的文件: 点资源管理 器菜单“器材”->“文件夹选项” 点“文件范例 ” 找到并选中“TXT 文本文档”,点“高等 ” 选中“始终表现 扩张名”,点“断定 ”,然后“封闭 ”) 在d:cvsrootCVSRTOO下新建文本文件 编辑 该文件,把下面三行 user1:user1encryptedpassword (加密暗码 是用CVSNT带的器材“Generate Passwords”天生 的,安装后菜单里有) user2:user2encryptedpassword user3:user3encryptedpassword 介入,生涯 退出,然后把该文件更名 为passwd(把扩张名去掉) 加3个用户 user1暗码 同上面设的 user2暗码 同上面设的 user3暗码 同上面设的 安装wincvs(下载所在:)后运行wincvs 点“Admin”->Preferences CVSROOT 改为 user1@myservername:d:cvsroot Authentication 选择 "passwd" file on the cvs server Use vesion 选择 cvs 1.10 (Standard) 然后“Admin”->“Login”,乐成 的返回码为0 然后可以Import一个module 然后可以checkout这个module,假如 checkout到同一个目次 ,要把本来 的目次 更名 或删除 点Create->Checkout module module name 填 mymodulename Local folder如 d:user1 在Globals页内里 把 Checkout read-only 不选中 其余的不管,点“断定 ”即可 checkout之前假如 没有login,必需 先login一次,除非事变 目次 ,不然 不必要 重新login |