Java Solaris 加入 SDN 参与讨论 我的社区 注册说明
 
JDK 6.0 API 中文版
 
 
 
 
 
Java API 文档中文版
通过实例学习 NetBeans 6 的新功能 第 4 部分:源代码的版本管理
 
By ja.netbeans, 7/15/08  

第 4 部分:源代码的版本管理

 


NetBeans 6.0 / 6.1 是一个开发环境,因此可以与各种版本管理系统相互协作。本文将以 NetBeans 6.0 / 6.1 与 Mercurial、Subversion、CVS 的协作为例详细介绍这种特性。


 


目录

 


下载 NetBeans 6.1
 

 

本系统文章使用 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
 

 

准备 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:初始化日志

在“项目”窗口中选择目标项目,然后从菜单中依次选择“版本控制”>“提交”。

Mercurial コミットウィンドウ
图 3:Mercurial 提交窗口

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

Mercurial 提交日志
图 4:Mercurial 提交日志

将更改内容保存到资源库中

接下来继续进行开发工作,当项目进展到一定程度后,确定更改内容并将其保存到资源库中。

在“项目”窗口中选择目标项目,然后从菜单中依次选择“版本控制”>“比较”。

Mercurial 相違
图 5:Mercurial 比较

确认更改内容没有问题后,从菜单中依次选择“版本控制”>“提交”。

在弹出的“提交”窗口中输入提交信息,单击“提交”按钮。

Mercurial 提交窗口画面
图 6:Mercurial 提交窗口

Mercurial 提交日志窗口
图 7:Mercurial 提交日志窗口

查看更改历史

保持目标文件为打开状态,然后从菜单栏中依次选择“版本控制”>“显示”>“显示标注”。

包含 Mercurial 标注的画面
图 8:包含 Mercurial 标注的画面

代码各行左侧将显示文件版本编号。

从菜单栏中依次选择“版本控制”>“显示历史记录”,输入起始时间,单击“搜索”按钮,然后再单击“比较”按钮。

包含 Mercurial 搜索结果的画面
图 9:包含 Mercurial 搜索结果的画面

展开相应的文件更改节点,选择目标文件。

Mercurial 历史记录中的比较信息
图 10:Mercurial 历史记录中的比较信息

多人开发(Mercurial 脚本 2)

创建资源库

首先,复制现有共享资源库。

从菜单栏中选择“版本控制”>“Mercurial”>“复制其他”。

复制外部 Mercurial 资源库
图 11:复制外部 Mercurial 资源库

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

Mercurial 复制日志
图 12:Mercurial 复制日志

将更改内容保存在资源库中

继续开发项目,进展到一定程度时,确认更改内容并将其保存在资源库中。

在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”。

Mercurial 差异画面
图 13:Mercurial 比较画面

确认更改内容没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。

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

Mercurial 提交窗口
图 14:Mercurial 提交窗口

Mercurial 提交日志
图 15:Mercurial 提交日志

添入其他开发人员的更改内容

如果其他开发人员对项目进行了更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,这会造成合并工作难以完成。

从菜单栏中依次选择“版本控制”>“显示”>“显示传入”,然后单击“搜索”按钮,确认其他人所做的更改(此步骤可以省略)。

Mercurial 传入更改
图 16:Mercurial 传入更改

继续操作,从菜单中依次选择“版本控制”>“获取”,确认其他人所做的更改。如果必要,可以解决相关冲突。

与其他开发人员共享自己更改的内容

在推入共享资源库时,需要添加其他开发人员的更改内容,并保持自己的资源库为最新状态。

接下来,从菜单栏中依次选择“版本控制”>“显示”>“显示传出”,来简单确认一下自己想要共享的内容(此步骤可以省略)。

Mercurial 传出更改
图 17:Mercurial 传出更改

确认完毕,将其推入共享资源库。

从菜单栏中依次选择“版本控制”>“共享”>“推入至缺省位置 ”。

Mercurial 推入日志
图 18:Mercurial 推入日志


用例 - Subversion
 

 

准备 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”>“导入资源库中”。

Subversion 导入画面
图 19:Subversion 导入画面

输入必要的参数后,单击“导入”按钮。

将更改内容保存到资源库中

继续开发项目,当进展到一定程度时,确认更改内容并将其保存到资源库中。

在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”。

Subversion 比较画面
图 20:Subversion 比较画面

确认更改内容没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。

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

Subversion 提交画面
图 21:Subversion 提交画面

Subversion 提交输出窗口
图 22:Subversion 提交输出窗口

查看更改历史

保持目标文件为打开的状态,然后从菜单栏中依次选择“版本控制”>“显示标注”。

包含 Subversion 标注的画面
图 23:包含 Subversion 标注的画面

代码左侧将显示文件版本编号 。

从菜单栏中依次选择“版本控制”>“搜索历史记录”,然后单击“比较”按钮。

包含 Subversion 搜索结果的画面
图 24:包含 Subversion 搜索结果的画面

展开文件版本号对应的节点,选择目标文件。

Subversion 搜索历史记录
图 25:Subversion 搜索历史记录

多人开发 (Subversion 脚本 2)

从资源库中签出

从共享资源库中签出作业文件。

从菜单栏中依次选择“版本控制”>“Subversion”>“签出”。

Subversion 签出画面
图 26:Subversion 签出画面

添加其他开发人员更改的内容

如果其他开发人员做了一些更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,从而造成合并工作难以完成。

从菜单栏中依次选择“版本控制”>“显示更改”,然后单击“远程”或“全部比较”按钮,简单确认其他人所做的更改(此步骤可以省略)。

显示 Subversion 更改的画面
图 27:显示 Subversion 更改的画面

从菜单栏中选择“版本控制”>“更新”,添加其他人的更改。如有必要,可以解决冲突。

将自己的更改内容与其他开发人员共享

根据〔单人开发 (Subversion 脚本 1)中的“将更改内容到保存到资源库中”〕一节中的操作提交更改内容。


用例 - CVS
 

 

准备 CVS

NetBeans IDE 6.0 / 6.1 随带了 CVS 和客户机功能,不使用现有的 CVS 资源库而要创建新资源库时,需要另行设置 CVS 执行环境。

NetBeans IDE 6.0 / 6.1 提供了 CVS 插件。

多人开发(CVS 脚本 1)

从资源库中签出

从现有的共享资源库中签出作业文件。

从菜单栏中依次选择“版本控制”>“CVS”>“签出”。

CVS 签出画面
图 28:CVS 签出画面

添加其他开发人员的更改内容

如果其他开发人员做了一些更改,应尽快加入这些内容,否则时间一长会积存越来越多的更改冲突,从而造成合并工作难以完成。

从菜单栏中依次选择“版本控制”>“显示更改”,然后单击“远程”按钮或“全部比较”按钮,确认其他人所做的更改(此步骤可以省略)。

CVS 显示更改的画面
图 29:CVS 显示更改的画面

从菜单栏中选择“版本控制”>“更新”,添加其他人更改的内容。如有必要,可以解决冲突。

将自己的更改内容与其他开发人员共享

接下来继续开发项目,进展到一定程度时,确认更改内容并将其保存在资源库中。

在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“比较”,以确认更改内容。

CVS 差异画面
图 30:CVS 比较画面

确认更改没有问题后,在“项目”窗口中选择目标项目,然后从菜单栏中依次选择“版本控制”>“提交”。

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

CVS 提交画面
图 31:CVS 提交画面

CVS 提交日志画面
图 32:CVS 提交日志画面

检查更改历史

保持目标文件为打开的状态,然后从菜单栏中依次选择“版本控制”>“显示标注”。

包含 CVS 标注的画面
图 33:包含 CVS 标注的画面

代码左侧将显示文件版本编号。

从菜单栏中依次选择“版本控制”>“搜索历史记录”,然后单击“比较”按钮。

包含 CVS 搜索结果的画面
图 34:包含 CVS 搜索结果的画面

展开文件版本对应的节点,然后选择目标文件。

CVS 历史中包含的差异信息
图 35:CVS 历史中包含的差异信息


用例 - 本地历史记录
 

 

准备本地历史记录

NetBeans IDE 6.0 / 6.1 随带了本地历史记录功能。如果未标明插件为无效,则可以在初始状态中使用。IDE 默认将保存 7 天之内的记录,可以通过“工具”>“选项”>“其他”>“版本控制”>“本地历史记录”来设置保存期限。

单人开发(本地历史记录 脚本 1)

查看更改历史

从菜单栏中依次选择“版本控制”>“本地历史记录”>“显示本地历史记录”。

本地历史记录
图 36:本地历史记录