// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 在 NetBeans IDE 中使用 Mercurial 队列支持
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 在 NetBeans IDE 中使用 Mercurial 队列支持 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 在 NetBeans IDE 中使用 Mercurial 队列支持

NetBeans IDE 提供对 Mercurial 队列扩展的支持。使用 IDE 的 Mercurial 队列支持可以创建、检查或在 IDE 中切换补丁程序，以及在修复错误或更新到新的基本修订版本时使用本地修改刷新补丁程序。本文档通过指导您完成使用 Mercurial 版本控制软件管理补丁程序的标准工作流，介绍了如何在 IDE 中执行基本的补丁程序特定任务。


== 要求

*要学完本教程，您需要具备以下软件和资源。*

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |版本 7.4 或 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包+] (JDK) |版本 7 或 8 

|link:http://mercurial.selenic.com/downloads/[+Mercurial 客户端软件+] |1.04 或更高版本 
|===

NOTE: 有关如何在系统上安装 Mercurial 客户端软件的信息，请参见link:mercurial.html#settingUp[+在 NetBeans IDE 中使用 Mercurial 支持+]。


== 启用 Mercurial 队列支持

由于 Mercurial 队列是一种扩展，必须先明确启用，然后才能使用。
要开始在 Mercurial 资源库上运行 Mercurial 队列，需要完成以下步骤：

1. 在系统上，浏览到  ``.hgrc``  文件。 ``.hgrc``  文件在 OS X 和 Linux 上的默认位置是  ``$HOME/.hgrc`` ，在 Windows 上是  ``%USERPROFILE%\Mercurial.ini`` 。
2. 将以下行添加到  ``.hgrc``  文件中。

[source,ini]
----
     [extensions]
     hgext.mq =
----


. 保存该文件。




== 创建补丁程序

要创建补丁程序，需要完成以下步骤：

1. 在 "Projects"（项目）窗口中，选择版本控制项目，然后选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Create Patch`` （创建补丁程序）；也可以右键单击项目名称，然后从弹出菜单中选择  ``Mercurial``  >  ``Queues`` （队列）>  ``Create Patch`` （创建补丁程序）。
此时将显示 "Create Patch"（创建补丁程序）对话框。

[.feature]
--
image::images/create-patch-small.png[role="left", link="images/create-patch.png"]
--


. 在 "Patch Name"（补丁程序名）文本字段中指定补丁程序的名称。
. 在 "Patch Message"（补丁程序消息）字段中提供补丁程序的说明。
此外，还可选择以下选项之一，然后单击 "OK"（确定）：
* 单击 "Recent Messages"（近期的消息）按钮 (image::images/recent.png[]) 可从最近提交的消息列表中选择消息
* 单击 "Load Template"（加载模板）按钮 (image::images/load.png[]) 可为提交消息选择消息模板。

NOTE: <<finish,将补丁程序转到永久更改集>>时，提供的补丁程序说明将用作提交消息。


. 在 "Files To Include In Patch"（要包含在补丁程序中的文件）表中选择要包含在补丁程序中的文件。
. (可选) 使用 "Update Issue"（更新问题）区域中的字段指定与已创建补丁程序有关的问题的相关信息。
. 单击 "Create Patch"（创建补丁程序）。
此时将创建新的补丁程序并将其添加到  ``.hg/patches``  目录。




== 使用本地修改刷新补丁程序

要将进行中工作保存到所创建的补丁程序中，需要完成以下步骤：

1. 从主菜单中选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Refresh Patch`` （刷新补丁程序）；也可以右键单击项目名称，然后从弹出菜单中选择  ``Mercurial``  >  ``Queues`` （队列）>  ``Refresh Patch`` （刷新补丁程序）。
此时将显示 "Refresh Patch"（刷新补丁程序）对话框。

[.feature]
--
image::images/refresh-patch-small.png[role="left", link="images/refresh-patch.png"]
--


. 在 "Patch Message"（补丁程序消息）字段中提供补丁程序的说明。
此外，还可选择以下选项之一，然后单击 "OK"（确定）：
* 单击 "Recent Messages"（近期的消息）按钮 (image::images/recent.png[]) 可从最近提交的消息列表中选择消息
* 单击 "Load Template"（加载模板）按钮 (image::images/load.png[]) 可为提交消息选择消息模板。

NOTE: <<finish,将补丁程序转到永久更改集>>时，提供的补丁程序说明将用作提交消息。


. 在 "Files To Include In Patch"（要包含在补丁程序中的文件）表中选择要包含在补丁程序中的文件。
. （可选）在 "Update Issue"（更新问题）区域中，指定与所提交更改有关的问题的相关信息。
. 单击 "Refresh Patch"（刷新补丁程序）。
此时将更新所处理的补丁程序。




== 比较补丁程序修订版本

要生成补丁程序以用于逐个检查和比较补丁程序修订版本，需要完成以下步骤：

1. 从主菜单中选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Diff`` （比较）；也可以右键单击项目名称，然后从弹出菜单中选择  ``Mercurial``  >  ``Queues`` （队列）>  ``Diff`` （比较）。
比较查看器在并排的面板中显示在当前补丁程序中发现的差异，以及所有未提交/未刷新的本地更改：

[.feature]
--
image::images/qdiff-small.png[role="left", link="images/qdiff.png"]
--


. 检查并修订使用图形化比较查看器或文本式比较查看器在所比较文件中发现的差异。

NOTE: 图形化比较查看器使用以下颜色编码来突出显示文件中的更改。

|===
|*蓝色* (     ) |表示自上一个补丁程序以来更改过的行。 

|*绿色* (     ) |表示自上一个补丁程序以来添加的行。 

|*红色* (     ) |表示自上一个补丁程序以来删除的行。 
|===

使用以下图标可以直接在图形化比较查看器中进行更改。

|===
|图标 |名称 |功能 

|image:images/replace.png[] |*替换* |将突出显示的文本从上一补丁程序插入当前补丁程序中。 

|image:images/replace-all.png[] |*全部替换* |将补丁程序的当前版本还原到其选定的以前版本的状态。 

|image:images/remove.png[] |*删除* |从补丁程序的当前版本中删除突出显示的文本，使之与以前的补丁程序版本完全匹配。 
|===




== 在补丁程序之间切换

要在补丁程序队列系列中切换特定补丁程序，需要执行以下步骤：

NOTE: 要在补丁程序之间切换，工作副本中_不能__有_本地修改，否则切换将失败。

1. 从主菜单中选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Go To Patch`` （转至补丁程序）；也可以右键单击项目名称，然后从弹出菜单中选择  ``Mercurial``  >  ``Queues`` （队列）>  ``Go to Patch`` （转至补丁程序）。
"Go To Patch"（转至补丁程序）对话框显示堆栈中可用的所有补丁程序的列表。

image::images/go-patch.png[]

NOTE: 

* 已应用补丁程序的名称以粗体显示。
* 选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Pop All Patches`` （弹出所有补丁程序）可从堆栈顶层删除已应用补丁程序，并更新工作目录以撤消所应用补丁程序的效果。

. 选择所需的补丁程序，然后单击 "Go"（开始）。
IDE 将所选补丁程序中包含的更改应用到所选项目、文件或文件夹。




== 完成应用的补丁程序

完成处理补丁程序时，可以将其转到永久更改集中。
要将补丁程序队列系列中的所有已应用补丁程序转到常规更改集中，请完成以下步骤：

NOTE: 要应用资源库中所有已保存的补丁程序，请从主菜单中选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Push All Patches`` （推入所有补丁程序）。

1. 从主菜单中选择  ``Team`` （团队开发）>  ``Queues`` （队列）>  ``Finish Patches`` （完成补丁程序）；也可以右键单击项目名称，然后从弹出菜单中选择  ``Mercurial``  >  ``Queues`` （队列）>  ``Finish Patches`` （完成补丁程序）。
此时将显示 "Finish Patches"（完成补丁程序）对话框。

image::images/finish-patches.png[]


. 在补丁程序字段中选择要完成的补丁程序的名称。

NOTE: 还将完成系列中位于所选补丁程序之前的所有补丁程序。


. 单击 "Finish Patches"（完成补丁程序）。
IDE 会将所选补丁程序及该补丁程序之前的所有已应用补丁程序转入常规更改集中。




== 小结

本教程通过指导您完成使用 Mercurial 版本控制软件管理补丁程序的标准工作流，介绍了如何在 IDE 中执行基本的补丁程序特定任务。它还介绍了如何在 NetBeans IDE 中启用 Mercurial 队列支持以及如何对补丁程序执行基本任务，同时简要说明了 IDE 中包含的一些特定于 Mercurial 的功能。



link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Suport%20For%20Mercurial%20Queues%20in%20NetBeans%20IDE[+发送有关此教程的反馈意见+]



== 另请参见

相关资料请参见以下文档：

* link:mercurial.html[+在 NetBeans IDE 中使用 Mercurial 支持+]
* link:http://wiki.netbeans.org/HgNetBeansSources[+在 IDE 中使用 Mercurial 处理 NetBeans 源+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+使用 NetBeans IDE 开发应用程序+]中的_使用版本控制对应用程序进行版本控制_



