⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvs, automake与autoconf简介.htm

📁 Makefile编程及相关资料的介绍与入门。很适合初学者的学习与借鉴
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                              align=middle border=0 name=image> 
                          </A></TD></TR></TBODY></TABLE>
                        <TABLE class=contentpaneopen>
                          <TBODY>
                          <TR>
                            <TD vAlign=top align=left width="70%" 
                              colSpan=2><SPAN class=small>执笔: Administrator 
                              </SPAN>&nbsp;&nbsp; </TD></TR>
                          <TR>
                            <TD class=createdate vAlign=top 
                              colSpan=2>2004-02-28 </TD></TR>
                          <TR>
                            <TD vAlign=top colSpan=2>CVS, Automake与Autoconf简介 
                              <BR>第一部分 CVS简介 <BR>cvs ( Concurrent Version System 
                              )是一个版本控制系统,什么是版本控制系统呢?简单的说,它可以记录程序代码修改的过程,有一个完整的历史记录( 
                              history )。辟如说,当你在修改程序代码的时候, 不小心写出了一个 
                              bug,但是你可能很久以后才发现多出了这个 bug, 这个时候,cvs 
                              就能很有效的帮助你找出到底是在哪一次的修改中,出现了这个 bug。 <BR>也许你会说, 
                              那我每次都把程序保存起来, 用tar 做好备份不就行了,当然, 你可以这样做, 但是这太浪费空间了! 
                              cvs 在版本更改间, 只储存不同的部分, 这样就可以省下很多空间。 <BR>在另一个场合里, 
                              更能显示出 cvs 的好处 ,比如多人一起开发软件的时候。 cvs支持远程访问, 
                              用户可以对他要修改的文件加上正在编辑的标志, 让别人知道他要修改这个文件了。 当然, 
                              一个较大的开发队伍,一般还会需要一个 mailing list 用来沟通。毕竟cvs 
                              只是一个管理程序代码的工具, 他并不扮演沟通的角色。 cvs的同类软件还有rcs和sccs。RCS 
                              ( Revision Control System ) 可以从FSF获得。SCCS ( Source 
                              Code Control System ) 
                              由AT&amp;T在SystemV中引入,现在已经被加入X/Open标准( Unix 98? 
                              )。比起这些软件,CVS的要优秀得多,特别是在支持多人远程开发方面。由于CVS出现较新,所以使用上反而没有它们普及。当然,如果您熟悉rcs,您会发现学习cvs非常容易。 
                              <BR><BR>名词 <BR>repository: 意为仓库。在 cvs 里, 
                              它就是你真正存放各历史版本的地方。 pserver: cvs 远程服务器,cvs 有两种工作模式, 
                              一种是 local, 一种是 remote。 一般通过inetd启动pserver。 
                              <BR>CVSROOT: 当使用 cvs 的时候, 要设定 CVSROOT这个环境变量, 或是用 
                              -d 选项来指定该参数,该参数指明你的仓库放在哪里。 <BR><BR>本地( local )cvs 
                              <BR>首先, 确定一个 cvsroot,比如: <BR>export 
                              CVSROOT="/home/joe/cvsroot/" 建立该目录: <BR>mkdir 
                              /home/joe/cvsroot <BR>接着,运行cvs init : <BR>cvs init 
                              <BR>cvs init 会帮你把 cvsroot 初始化。接着, 建立一个要放文件的目录 ( 
                              相当于一个Project ): mkdir /home/joe/cvsroot/cvsdoc 
                              <BR>cd /home/joe/work <BR>cvs checkout cvsdoc( 
                              或者简写为: cvs co cvsdoc ) 你会看到下面的信息: cvs checkout: 
                              Updating cvsdoc cvs checkout 会把当前最新的版本拷贝到你的当前目录下。 
                              <BR>记住, 不要自己建立 /home/joe/work/cvsdoc, 
                              该目录下还会有一些用于管理的 cvs 相关的信息。 <BR>接着, 进入 cvsdoc 目录, 编辑 
                              cvs.doc 这个文件档案,输入一些信息。 <BR>然后,运行: <BR>cvs add 
                              cvs.txt cvs commit -m "Initial revision." cvs add 
                              就会把 cvs.txt 加入 cvs 维护的文件列表中去。 <BR>cvs commit 
                              检查当前目录下所有的在文件列表中的文件,并把对他们的改动加入到仓库中。-m 表示这次 commit 
                              的 message,一般说明此次修改的相关信息。 <BR>现在修改一下 
                              cvs.txt,并且,在文件档案的最上面加上 $Id$ 的字样。 <BR>改完之后, 再 
                              commit 一次: <BR>cvs commit -m "Adding new stuff." 
                              <BR>现在看看我们所做的修改: <BR>cvs log cvs.txt <BR>可以看到: 
                              <BR>RCS file: /home/joe/cvsroot/cvsdoc/cvs.txt,v 
                              <BR>Working file: cvs.txt <BR>head: 1.2 
                              <BR>branch: <BR>locks: strict <BR>access list: 
                              <BR>symbolic names: <BR>keyword substitution: kv 
                              <BR>total revisions: 2; selected revisions: 2 
                              <BR>description: <BR>---------------------------- 
                              <BR>revision 1.2 <BR>date: 2000/09/11 11:55:06; 
                              author: joe; state: Exp; lines: +2 -0 <BR>i 
                              <BR>---------------------------- <BR>revision 1.1 
                              <BR>date: 2000/09/11 11:52:32; author: joe; state: 
                              Exp; <BR>initial version 
                              <BR>================================================================== 
                              <BR>你会看到每次修改加进去的 
                              message。这对开发者,特别是一个大的项目的开发者,其帮助是不言而喻的。 <BR>cvs 
                              diff -r 1.1 -r 1.2 cvs.txt <BR>可以看到: <BR>Index: 
                              cvs.txt 
                              <BR>================================================================== 
                              RCS file: /home/joe/cvsroot/cvsdoc/cvs.txt,v 
                              <BR>retrieving revision 1.1 <BR>retrieving 
                              revision 1.2 <BR>diff -r1.1 -r1.2 <BR>0a1 <BR>&gt; 
                              $Id: cvs.txt,v 1.2 2000/09/11 11:55:06 joe Exp $ 
                              <BR>1a3 <BR>&gt; hehe,sencond time edit it! 
                              <BR>这样会显示 1.1 和 1.2 版的 diff, 原本有 1.1 版的人, 只需要用这个 
                              patch 就可以了升级到1.2了! <BR>再编辑 cvs.txt, 可以发现最上面的 Id 
                              变长了? 加了一代串文字: <BR>$Id: cvs.txt,v 1.2 2000/09/11 
                              11:55:06 joe Exp $ 这显示这个版本的一些相关信息。 <BR>远程( remote 
                              )cvs 
                              <BR>如果我们要做一个比较大的项目,上面讲的本地cvs服务就太简单了,我们要让众多的人可以远程开发程序! 
                              比如我们要用cvs组织起我们的minigui项目。 检查 /etc/services 
                              有没有这两行,没有请加入: <BR>cvspserver 2401/tcp #CVS network 
                              server cvspserver 2401/udp #CVS network server 
                              <BR>在 /etc/inetd.conf 加入: <BR>cvspserver stream 
                              tcp nowait root /usr/local/bin/cvs cvs 
                              --allow-root=/home/minigui pserver <BR>mkdir 
                              /home/minigui <BR>要是该设置生效,请重启inetd。 
                              <BR>添加用户anoncvs, 这是要给匿名cvs 用户使用的帐号,其组为nogroup。 
                              新加一个名为 minigui的 group。 添加参与 minigui开发的用户的帐号, 当然, 
                              把他们的 group 设为 minigui。 <BR>cvs -d /home/minigui 
                              init <BR>cd /root/minigui, 这是原来已经存在的版本, 
                              现在我们要把它的东西放进 cvs 仓库里: 
                              比如,我们把minigui的库minigui03放到仓库中: <BR><BR>cd 
                              minigui03;cvs import –m “the lib” minigui03 joe 
                              start <BR><BR>会看到cvs把一个个文件放到仓库中。 <BR>cvs import 
                              的语法为: <BR><BR>cvs import -m "log msg" projname 
                              vendortag releasetag <BR><BR>vendortag 和releasetag 
                              一般不需要关心,我们这里使用一个用户名和一个start 标志。 
                              <BR>我们把其它相关的project也放到cvs仓库中: <BR><BR>cd 
                              miniguiapps03 ; cvs import –m “the apps” 
                              miniguiapps03 joe start <BR>cd miniguiexec03 ; cvs 
                              import –m “the demos” miniguiexec03 joe start 
                              <BR><BR>这样,我们就把minigui的一个cvs服务器建立好了。 <BR>注意, 一个 
                              user 要远程访问某些project, 
                              他必须拥有适当的权限。比如,minigui03这个目录应该属于组minigui,且组可写。才能使minigui组里的用户可以远程参与minigui库的开发。 
                              <BR><BR>现在试试看从远程访问 cvs 服务器。 <BR>首先, 
                              在你的机器上建立一个工作目录, 譬如是 /home/joe/work <BR>cd 
                              /home/joe/work <BR>cvs -d 
                              :pserver:joe@www.minigui.org:/home/minigui login 
                              <BR>cvs -d 
                              :pserver:joe@www.minigui.org:/home/minigui co 
                              minigui03 <BR>cvs -d 
                              :pserver:joe@www.minigui.org:/home/minigui co 
                              miniguiapps03 <BR>cvs -d 
                              :pserver:joe@www.minigui.org:/home/minigui co 
                              miniguiexec03 <BR>cvs -d 
                              :pserver:joe@www.minigui.org:/home/minigui logout 
                              <BR><BR>当你敲入login行时,系统会提示你输入password, 打进去。 <A 
                              href="http://www.minigui.org/" 
                              target=_blank>http://www.minigui.org/</A>是cvs服务器所在的机器。 
                              该指定被执行后,该 cvsroot 
                              <BR>(:pserver:joe@www.minigui.org:/home/minigui) 
                              和加密后的密码会被存在 ~/.cvspass 里。 
                              <BR>底下几行取出各个project。最后logout。 <BR><BR>cd minigui03 
                              <BR><BR>做了一些修改后,可以commit出去: <BR><BR>cvs commit -m 
                              "little change" <BR>上面是一般开发者的登陆方法,对于匿名cvs, 
                              可以让其不需要输入口令即可登陆,但是不能让其commint。这需要: <BR>1. 
                              将要开放的project设为全局可读写,因为cvs服务器在操作时要在相应目录下设置读写琐(即需要创建一些临时文件),所以即使是check 
                              out 操作,也需要目录可写。 <BR>2. 为了让匿名用户只有check 
                              out权限,可以在CVSROOT目录下建立一个readers文件,其中每一行是一个用户,这些用户只具有只读权限。比如: 
                              <BR>anonymous <BR>anoncvs <BR>guest <BR>jbrowse 
                              <BR>3. 利用passwd文件,使匿名用户不能用其它方式登陆。典型为: 
                              <BR>在文件CVSROOT/passwd 中: <BR>anoncvs:XR4EZcEs0szik 
                              <BR>在文件/etc/passwd 中为: 
                              <BR>anoncvs:!:1729:105:Anonymous CVS 
                              User:/home/minigui:/bin/false 
                              <BR>CVSROOT/passwd文件是cvs提供的一个专用于存放cvs密码的文件。它的典型格式为: 
                              <BR>joe:XR4EZcEs0szik:jane 
                              <BR>表示cvs用户joe其实是内部用户jane,其cvs密码加密后被存放在第二个字段,这样就将cvs服务与系统的其它部分分离开来,大大地提高了系统的安全性。 
                              <BR>上面介绍的是使用需要严格的安全认证的pserver服务器,如果您在局域网内开发程序,则可以使用rsh或者ssh,设置非常简单,服务器端只要开放着rsh或ssh服务器,客户端设置两个环境变量:CVS_RSH与CVSROOT,可以将它们的设置写入预处理脚本,比如使用ssh连接: 
                              <BR><BR>$export CVS_RSH="ssh" <BR>$export 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -