第 4 部分:源代码的版本管理
NetBeans 6.0 / 6.1 是一个开发环境,因此可以与各种版本管理系统相互协作。本文将以 NetBeans 6.0 / 6.1 与 Mercurial、Subversion、CVS 的协作为例详细介绍这种特性。
本系统文章使用 NetBeans 6.0(.1) 作为开发工具。NetBeans 6.1 的英文版和中文版都已经顺利发布,因此本文也同样适用于 NetBeans 6.1 中文开发环境。
NetBeans 6.1 中文版下载页面如下 (2008-06-04):
http://dlc.sun.com.edgesuite.net/netbeans/6.1/final
在 Wikipedia 中打开 List of revision control software 项,从“旧有系统”到“当前系统”,再到“积极开发中的系统”,列举出来的系统共有 62 个之多(至撰写本文时)。在这其中,版本管理系统可以分为 Distributed model(分布式模式)和 Client-server model(客户机服务器模型,即集中型)两种。
Mercurial 属于分布式模式。所谓分布式模型是指:采用 P2P 形态,将资源库的副本置于每个参与者的身边,通过 P2P 交换补丁来实现各台机器的资源库同步操作。由于这种形态自由度很高,要求利用者必须有意识地更新,也有人提意见说门槛太高。
Subversion 和 CVS 属于集中型中。所谓集中型是指:采用服务器与客户机整合形态,将所有历史信息保存在服务器方,然后提供给多人共享。而在客户机方面,编辑方版本可以复制,登记版本和比较等所有的操作都可以通过网络来执行,可以说是一种对互联网信赖性很高的形态。
本地历史记录,顾名思义就是指将历史信息保存在本地。本地历史记录不需要任何设定,使用非常简单,但是不适合与其他人共享历史信息的场合。
准备 Mercurial
NetBeans IDE 6.0 / 6.1 并未随带 Mercurial,如果所使用的 OS 环境没有提供 Mercurial,则需要另外安装。请参考这个网址:http://www.selenic.com/mercurial/wiki/。
NetBeans IDE 6.1 附带包含了 Mercurial 插件,但 NetBeans IDE 6.0 并没有包含该插件。因此在使用 NetBeans IDE 6.0 时,需要通过插件管理器来安装 Mercurial 插件。
Mercurial 插件的安装方法很简单,依次选择“工具”>“插件”,在弹出的“插件”窗口中选择“可用插件”选项卡,再选中“Mercurial 安装”复选框,单击“安装”按钮,然后再按照提示操作就可以了。
单人开发(Mercurial 脚本 1)
创建资源库
您可以根据自己的喜爱创建特定的 NetBeans 项目,然后创建并提交资源库。在“项目”窗口中选择目标项目, 然后从菜单栏中依次选择“版本控制”>“Mercurial”>“初始化项目”。
在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“Mercurial”>“初始化项目”。

图 1:初始化菜单

图 2:初始化日志
在“项目”窗口中选择目标项目,然后从菜单中依次选择“版本控制”>“提交”。

图 3:Mercurial 提交窗口
在弹出的“提交”窗口中输入提交信息,然后单击“提交”按钮。

图 4:Mercurial 提交日志
将更改内容保存到资源库中
接下来继续进行开发工作,当项目进展到一定程度后,确定更改内容并将其保存到资源库中。
在“项目”窗口中选择目标项目,然后从菜单中依次选择“版本控制”>“比较”。

图 5:Mercurial 比较
确认更改内容没有问题后,从菜单中依次选择“版本控制”>“提交”。
在弹出的“提交”窗口中输入提交信息,单击“提交”按钮。

图 6:Mercurial 提交窗口

图 7:Mercurial 提交日志窗口
查看更改历史
保持目标文件为打开状态,然后从菜单栏中依次选择“版本控制”>“显示”>“显示标注”。

图 8:包含 Mercurial 标注的画面
代码各行左侧将显示文件版本编号。
从菜单栏中依次选择“版本控制”>“显示历史记录”,输入起始时间,单击“搜索”按钮,然后再单击“比较”按钮。

图 9:包含 Mercurial 搜索结果的画面
展开相应的文件更改节点,选择目标文件。

图 10:Mercurial 历史记录中的比较信息
多人开发(Mercurial 脚本 2)
创建资源库
首先,复制现有共享资源库。
从菜单栏中选择“版本控制”>“Mercurial”>“复制其他”。

图 11:复制外部 Mercurial 资源库
指定合适的 Mercurial 资源库、Mercurial 路径、地址目录。此处假设为 NetBeans 项目,选中“复制后扫描 NetBeans 项目”,然后单击“完成”按钮。

图 12:Mercurial 复制日志
将更改内容保存在资源库中
继续开发项目,进展到一定程度时,确认更改内容并将其保存在资源库中。
在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”。

图 13:Mercurial 比较画面
确认更改内容没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。
在弹出的“提交”窗口中输入提交信息,然后单击“提交”按钮。

图 14:Mercurial 提交窗口

图 15:Mercurial 提交日志
添入其他开发人员的更改内容
如果其他开发人员对项目进行了更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,这会造成合并工作难以完成。
从菜单栏中依次选择“版本控制”>“显示”>“显示传入”,然后单击“搜索”按钮,确认其他人所做的更改(此步骤可以省略)。

图 16:Mercurial 传入更改
继续操作,从菜单中依次选择“版本控制”>“获取”,确认其他人所做的更改。如果必要,可以解决相关冲突。
与其他开发人员共享自己更改的内容
在推入共享资源库时,需要添加其他开发人员的更改内容,并保持自己的资源库为最新状态。
接下来,从菜单栏中依次选择“版本控制”>“显示”>“显示传出”,来简单确认一下自己想要共享的内容(此步骤可以省略)。

图 17:Mercurial 传出更改
确认完毕,将其推入共享资源库。
从菜单栏中依次选择“版本控制”>“共享”>“推入至缺省位置 ”。

图 18:Mercurial 推入日志
准备 Subversion
NetBeans IDE 6.0 / 6.1 并未随带 Subversion,如果所使用的 OS 环境没有提供 Subversion,则需要另外安装。请参考这个网址:http://subversion.tigris.org/ 。
NetBeans IDE 6.0 / 6.1 提供了 Subversion 插件。
单人开发(Subversion 脚本 1)
创建资源库
在 NetBeans 外部创建资源库。
$ svnadmin create /path/to/repository
第一次将项目内容保存在资源库中
使用 NetBeans 创建项目,初步成形后将其导入资源库。
在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“Subversion”>“导入资源库中”。

图 19:Subversion 导入画面
输入必要的参数后,单击“导入”按钮。
将更改内容保存到资源库中
继续开发项目,当进展到一定程度时,确认更改内容并将其保存到资源库中。
在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”。

图 20:Subversion 比较画面
确认更改内容没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。
在弹出的“提交”窗口中输入提交信息,然后单击“提交”按钮。

图 21:Subversion 提交画面

图 22:Subversion 提交输出窗口
查看更改历史
保持目标文件为打开的状态,然后从菜单栏中依次选择“版本控制”>“显示标注”。

图 23:包含 Subversion 标注的画面
代码左侧将显示文件版本编号 。
从菜单栏中依次选择“版本控制”>“搜索历史记录”,然后单击“比较”按钮。

图 24:包含 Subversion 搜索结果的画面
展开文件版本号对应的节点,选择目标文件。

图 25:Subversion 搜索历史记录
多人开发 (Subversion 脚本 2)
从资源库中签出
从共享资源库中签出作业文件。
从菜单栏中依次选择“版本控制”>“Subversion”>“签出”。

图 26:Subversion 签出画面
添加其他开发人员更改的内容
如果其他开发人员做了一些更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,从而造成合并工作难以完成。
从菜单栏中依次选择“版本控制”>“显示更改”,然后单击“远程”或“全部比较”按钮,简单确认其他人所做的更改(此步骤可以省略)。

图 27:显示 Subversion 更改的画面
从菜单栏中选择“版本控制”>“更新”,添加其他人的更改。如有必要,可以解决冲突。
将自己的更改内容与其他开发人员共享
根据〔单人开发 (Subversion 脚本 1)中的“将更改内容到保存到资源库中”〕一节中的操作提交更改内容。
准备 CVS
NetBeans IDE 6.0 / 6.1 随带了 CVS 和客户机功能,不使用现有的 CVS 资源库而要创建新资源库时,需要另行设置 CVS 执行环境。
NetBeans IDE 6.0 / 6.1 提供了 CVS 插件。
多人开发(CVS 脚本 1)
从资源库中签出
从现有的共享资源库中签出作业文件。
从菜单栏中依次选择“版本控制”>“CVS”>“签出”。

图 28:CVS 签出画面
添加其他开发人员的更改内容
如果其他开发人员做了一些更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,从而造成合并工作难以完成。
从菜单栏中依次选择“版本控制”>“显示更改”,然后单击“远程”按钮或“全部比较”按钮,确认其他人所做的更改(此步骤可以省略)。

图 29:CVS 显示更改的画面
从菜单栏中选择“版本控制”>“更新”,添加其他人更改的内容。如有必要,可以解决冲突。
将自己的更改内容与其他开发人员共享
接下来继续开发项目,进展到一定程度时,确认更改内容并将其保存在资源库中。
在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”,以确认更改内容。

图 30:CVS 比较画面
确认更改没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。
在弹出的“提交”窗口中输入提交信息,然后单击“提交”按钮。

图 31:CVS 提交画面

图 32:CVS 提交日志画面
检查更改历史
保持目标文件为打开的状态,然后从菜单栏中依次选择“版本控制”>“显示标注”。

图 33:包含 CVS 标注的画面
代码左侧将显示文件版本编号。
从菜单栏中依次选择“版本控制”>“搜索历史记录”,然后单击“比较”按钮。

图 34:包含 CVS 搜索结果的画面
展开文件版本对应的节点,然后选择目标文件。

图 35:CVS 历史中包含的差异信息
准备本地历史记录
NetBeans IDE 6.0 / 6.1 随带了本地历史记录功能。如果未标明插件为无效,则可以在初始状态中使用。IDE 默认将保存 7 天之内的记录,可以通过“工具”>“选项”>“其他”>“版本控制”>“本地历史记录”来设置保存期限。
单人开发(本地历史记录 脚本 1)
查看更改历史
从菜单栏中依次选择“版本控制”>“本地历史记录”>“显示本地历史记录”。

图 36:本地历史记录
|