首页>参考读物>计算机科学与技术>软件与程序设计

CVS 开源软件开发技术
作者 : (美)Karl Fogel
译者 : 肖虎勤 陈军等
出版日期 : 2001-06-01
ISBN : 7-111-08891-3
定价 : 35.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 260
开本 : 16开
原书名 : Open Source Development With CVS
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书详细介绍CVS 的发展历史、基本概念、高级应用等内容。本书不仅介绍了CVS的基本知识,而且提供了管理或参与开发开放资源项目的具体建议。本书介绍了许多自由软件开发中常见的问题和分析,还针对用得最广的版本控制系统提供了便利的指南。本书有助于自由软件开发人员利用在线文档进行设计与开发工作。本书适合CVS服务器的管理员、自由软件管理者、自由软件爱好者等参考。

图书前言

如果你像别的程序员一样,不需靠开发自由软件谋生(只要你愿意,一定能赚很多钱,不是吗?),那么至少你可能使用过一些自由软件,并给自由项目捐献了一些代码或文件。假若这样,就要注意到近几年来在自由软件领域所展示出的现象: 正在形成一种文化和一组具有共享价值的资源。即:自由软件有维护者,但没有所有者,开发者与用户之间没有明确的分界线。错误(bug)被公布,而不是被隐藏,并且所有的软件开发信息都被公布。 许多自由项目,特别是一些大型的、分布式的软件开发小组,将其源代码保存在一个名为CVS的版本控制系统中。 第二种现象和第一种现象紧密相关。CVS能够迅速流行,得益于自由软件支持并鼓励开放、发展的软件开发方式。同时,CVS允许因特网上的任何人及时访问源代码的最新版本,以利于“补丁文件”的建立,及适应人们贡献修正错误的方法和项目的新功能的需要。CVS还允许积极开发者对相同的基代码进行修改,并且不需保持一致的修改步调。事实上,如果没有CVS,我们也必须创造一个这样的版本控制系统。 本书有两个目的:一个是社会目的,另一个是技术目的。社会目的是证明出现的这种新文化,并且对人们管理或参与开发开放资源项目能提供具体的建议。技术目的是当你运用CVS时,告诉你必须了解一些有关CVS的知识,以便能更好地在开放资源项目上运用CVS。 至于在第一个目的中涉及的单词“建议”,许多人认为这可能是我对一个初期且不稳定项目的不太确切的看法。但是在World Wide Web问世不到一年时,就出现了主页设计源程序块。事实证明,许多的看法是可疑的或者根本就是错误的。为避免出现这种问题,我将在进行开放资源的练习中,尽量坚持采用从实际经历中学到的知识为例子。所以,当我的个人看法成为一种观点之后,请不要把它作为我的一种臆断。 尽管你能从开放资源项目的内容中认识到CVS,但如果你能经常运用CVS,则能更好地学习CVS。CVS不仅能管理程序源代码,也能翻译网址、文本文档、配置文件等(不必通过长期的实验,只需运用CVS,你就能判断出CVS是否为给定状态下的恰当程序工具)。 本书的章节之间并非紧密关联:其中,一些是有关开放资源发展的内容,另一些是有关CVS的内容。随着内容的不断深入,你将发现这两个主题之间没有严格的区分,并且是紧密相连的。学习本书后不要求你能马上精通CVS,但你肯定能用在线文档进行自由软件的设计和开发工作。并且,至少能马上熟悉UNIX,因为CVS是一个UNIX环境下的实例。但如果你能迅速研究本书,就能在抛开UNIX环境的情况下学会CVS。 两个术语 “开放资源”(Open Source)和“自由软件”(free software)有何不同?这是一个旷日持久的辩论话题。在我看来,这两条术语没有本质的区别,并且,我将在本书中交替使用这两条术语。在http://www.gnu.org/philosophy/open-source-or-free.html中可见到Richard Stallman的论文“为什么称‘自由软件’比称‘开放资源’好”。该论文精辟地说明了这两个术语的不同之处。 自由软件中的“自由”,当然不是指价格,而是指软件中的源代码能自由地进行修改和再分发。对于自由软件开发的自由度,并不是指软件的低价位。实际上,这种自由度正是自由软件能够成功的关键。遗憾的是,英语单词本身不能区分“自由”与“免费”这两个不同概念。 CVS在本书中的用法 在本书中,会有许多带有解释文字的命令行实例,并且主要例子中的用户名为Jrandom,它工作在名为floss.red-bean.com的机器上。其命令提示行为: floss$ 提示行下面的输出,与提示行为同一字体: floss$ whoami jrandom floss$ 偶尔因命令行本身太长而占据标准UNIX终端的多行时,在命令行的末端将出现一个反斜杠。该反斜杠表明下一行继续为命令行。由于可读性的原因,命令行有可能缩排。例如: floss$ cvs diff -c -r prerelease-beta-2_09-19990315 -r     postrelease-3_0-19990325 fudgewinkle.c (在本书末尾,介绍所有命令的含义。) 有时,需要从其他位置执行外部命令(例如,当前项目由两个不同的人同时开发时)。在这种情况下,假设另外一个人的名字为qsmith,她工作的机器名为paste: paste$ whoami qsmith paste$ 所有的命令都在一个UNIX(Bourne Shell)环境下运行。如果你基本熟悉UNIX,就会发现本书会有一些特别的内容。例如,你会注意到ls命令的运行有时会有一点异常: floss$ ls foo.txt  bar.c  myproj/ myproj/的后缀“/”并不是文件名的一部分,只表明myproj是一个目录,因为显示的反斜杠是在jrandom的工作环境下。ls命令相当于运行ls -CF命令,即把文件按行列显示,并显示它们的类型(“/”代表目录,“*”代表可执行文件,“@”代表符号连接等等)。 我决定在本书的例子中都保持这种格式,因为当阅读输出时,这种格式对于区分文件和目录非常有用。所以,即使你没有在ls命令后附加-CF选项,输出也会默认该选项。 联系与下载 本书有关具体CVS运用的章节(2、4、6、8、9和10章),其版权属于GNU General public License,所以读者能够直接从http://cvsbook.red-bean.com中浏览或下载这些章节。如果你从在线目录版本中发现CVS的bug,请将这些bug报告给bug-cvsbook@red-bean.com。

作者简介

(美)Karl Fogel:暂无简介

译者简介

肖虎勤 陈军等:暂无简介

译者序

今天,自由软件在世界上日益普及。由于它的源代码是公开的;因此,如何更好地管理自由软件的源代码,使其更好地进行开发已成为一个现实问题。于是,为了满足这一需要,CVS(Concurrent Versions System,版本协作控制系统)就应运而生了。 本书就是在这种环境下完成的。作者针对自由软件开发的现状和发展前景,作了大量的研究,并且在许多专业人士的帮助下,完成了此书,它对于自由软件的发展具有很强的实用性。书中不但解答了许多有关自由软件开发的疑问,还针对用得最广的版本控制系统提供便利的使用指南。本书主要为CVS服务器的管理员、自由软件管理者以及自由软件爱好者编写。 另外,本书通过大量的实验介绍了CVS如何管理源代码、Web页以及帮助读者熟悉开发源文件发展的一些协定等等。 参加本书翻译的工作人员主要有肖虎勤、陈军、姚凯、李向荣、龙浩等。由于译者水平有限,疏漏之处在所难免,欢迎读者批评指正。 2000年11月

图书目录

译者序 前言 第1章  CVS发展过程 1 1.1  什么是自由软件 1 1.1.1  CVS的产生 2 1.1.2  两种开发类型 3 1.2  CVS和自由项目有什么关系 4 1.3  开放资源开发的原则和CVS在其中的     用处 6 1.4  怎样获得代码 7 第2章  CVS概况 10 2.1  CVS基本概念 10 2.2  CVS速成 13 2.2.1  调用CVS 14 2.2.2  访问源代码库 14 2.2.3 开始一个新项目 16 2.2.4  检验一个工作拷贝 18 2.2.5  做出更改 21 2.2.6  寻找工作记录 21 2.2.7  CVS和隐含参数 25 2.2.8  提交 28 2.2.9  检测并解决冲突 32 2.2.10  浏览记录信息 34 2.2.11  检查并还原更改 37 2.3  其他一些有用的CVS命令 41 2.3.1  增加文件 41 2.3.2  增加目录 42 2.3.3  删除文件 43 2.3.4  删除目录 43 2.3.5  文件和目录重命名 44 2.3.6  省略选项输入 45 2.3.7  制作快照 45 2.4  分支 54 2.4.1  从分支到主干合并改变 59 2.4.2  多重合并 61 2.4.3  无工作拷贝的情况下生成标记或       分支 64 第3章  开放资源进程 65 3.1  失败与成功 65 3.2  启动一个项目 66 3.2.1  公开一些有用的东西 67 3.2.2  包装 69 3.2.3  声明项目 72 3.3  运行项目 72 3.3.1  培养专业判断力 75 3.3.2  到底谁是维护者 77 3.3.3  委员会所定的规则 77 3.3.4  如果绝对需要做分支,怎么办? 79 3.3.5  维护者的变更 81 3.3.6  解决办法 81 3.4  小结 81 第4章  CVS源代码库管理 82 4.1  管理员职责 82 4.2  获得及安装CVS 82 4.2.1  UNIX下获得和编译CVS 82 4.2.2  在Windows下获得并安装CVS 84 4.2.3  在Macintosh下获得及安装CVS 85 4.3  剖析一个CVS版本 86 4.3.1  信息文件 86 4.3.2  子目录 87 4.3.3  其他源码信息 89 4.4  建立源代码库 89 4.4.1  密码确认服务器 91 4.4.2  源代码库结构细析 95 4.4.3  RCS格式总是给@标志加引号 100 4.4.4  移走文件所产生的后果 102 4.4.5  CVSROOT/管理目录 103 4.5  小结 111 第5章  为分布开发而设计 112 5.1  软件设计的重要性 112 5.2  软件设计与自由软件设计 112 5.3  设计变化情况 114 5.4  代码设计 115 5.4.1  把确定和不确定分开 115 5.4.2  代码分解成文件和目录 116 5.4.3  代码分解成模块 116 5.5  以进化为中心的设计 118 5.6  自由软件设计的基本准则 119 5.6.1  不要限制输入 119 5.6.2  使用一致的接口 120 5.6.3  将数据结构归档 120 5.6.4  使其有良好的移植性 121 5.7  小结 121 第6章  高级CVS 122 6.1  超越基本工作 122 6.2  把CVS作为电话 122 6.2.1  监视功能 122 6.2.2  登录信息和提交电子邮件 135 6.2.3  删除一个工作拷贝 136 6.3  对项目历史记录的总体浏览 137 6.4  使用关键字扩展 145 6.5  使用分支 146 6.5.1  反复合并到主干 147 6.5.2  合并进出主干 153 6.5.3  更简单的方法 154 6.6  网上信息 160 第7章  编译、测试和发布 161 7.1  为什么要发布 161 7.2  启动发布过程 162 7.2.1  避免“代码仓促发布” 162 7.2.2  冻结 163 7.2.3  开发与稳定分支 164 7.3  测试 165 7.3.1  招募和留住测试人员 165 7.3.2  自动测试 166 7.4  编译、安装和打包 166 7.5  发布 171 7.5.1  告诉世界做了哪些修改 171 7.5.2  在CVS中记录发布版本:标签和       版本号 171 7.6  小结 172 第8章  技巧和疑难解答 173 8.1  当有问题出现时 173 8.2  常见问题 173 8.2.1  工作拷贝的管理域 173 8.2.2  源代码库访问权限 175 8.3  常见问题和解决办法 176 8.3.1  实际问题及解答 177 8.3.2  跟踪变化 185 第9章  CVS完全参考手册 186 9.1  组织与惯例 186 9.2  命令 186 9.2.1  CVS命令的一般格式 186 9.2.2  全局选项 187 9.2.3  命令列表 190 9.3  关键字替换 217 9.3.1  控制关键字扩展 217 9.3.2  关键字列表 218 9.4  源代码库管理文件 219 9.4.1  共享语法 220 9.4.2  源代码库管理文件的列表 220 9.5  运行控制文件 225 9.6  工作拷贝文件 226 9.7  环境变量 228 第10章  和CVS一起工作的第三方工具 230 10.1  什么是“第三方工具” 230 10.2  pcl-cvs:一个带有Emacs界面的CVS 230 10.2.1  pcl-cvs 的安装 231 10.2.2  使用pcl-cvs 232 10.2.3  pcl-cvs 中错误的处理 233 10.2.4  pcl-cvs的前景 234 10.3  cvsutils:使用CVS的常用工具 234 10.3.1  cvsu 235 10.3.2  cvsdo 235 10.3.3  cvschroot 236 10.3.4  cvsrmadm 236 10.3.5  cvspurge 236 10.3.6  cvsdiscard 237 10.3.7  cvsco 237 10.3.8  cvsdate 237 10.4  cvs2cl.pl:从cvs 日志中生成的GNU-Style      更改日志 237 10.5  cvslock:对源代码库的基本单元上锁 239 10.6  其他包 241 10.6.1  CVSUp 241 10.6.2  CVSWeb 241 10.6.3  CVS contrib/Directoy 241 10.7  编写自己的工具 241 附录A  CVS 的维护和发展 243 附录B  GNU 通用公共许可证 245

教学资源推荐
作者: [美]沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 索娅·坎南(Sowmya Kannan) 雷蒙德·盖拉多(Raymond Gallardo) 著
作者: [美]基普·欧文(Kip Irvine) 著
作者: Brian W.Kernighan,Dennis M.Ritchie
参考读物推荐
作者: Bruce Eckel
作者: 唐松 陈智铨 编著
作者: (美)Brian Goetz,Tim Peierls 等著