// 
//     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バージョン管理クライアント・バージョン1.0.x以降をサポートしています。IDEのMercurialサポートにより、IDE内のプロジェクトから直接バージョン管理タスクを実行できます。このドキュメントでは、バージョン管理ソフトウェアを使用する場合の標準的なワークフローを説明することによって、IDEの基本的なバージョン管理タスクの実行方法を示します。

link:http://www.selenic.com/mercurial/wiki/[+Mercurial+]は、非常に大きな分散プロジェクトを効果的に処理するために設計された、高速で軽量なソース制御システムです。CVSやSubversionとは異なり、Mercurialは、オープン・ソース・プロジェクトの多くで一般的に使用されており集中管理を行わずに分散開発をサポートする分散リポジトリを扱います。ファイルとディレクトリの両方にMercurialコマンドを使用できます。IDEはグラフィカルな差分ビューアを備えており、ファイル・リビジョンを比較でき、エディタで直接インライン差分もサポートしています。

IDEのMercurialサポートは、IDEのSubversionサポートに似ています。主な違いは、Mercurialが分散リビジョン管理システムであることです。ユーザーは一般に、操作する外部リポジトリを_クローン_することから始めます。このクローンは、リビジョン履歴を含むリポジトリの完全なコピーです。必要な回数に応じてローカル・コピーをクローンできます。準備ができたら、権限があれば、ローカルで行った変更を元のリポジトリにプッシュし、権限がなければ、変更を_エクスポート_して、リポジトリ所有者に送信できます。

== 内容

image::images/netbeans-stamp.png[title="このページの内容は、NetBeans IDE 8.0に適用されます"]

* <<settingUp,Mercurialの設定>>
* <<synchronizing,ローカル・ファイルとリポジトリの同期>>
* <<editing,ソースの編集>>
* <<viewingChanges,ソース・エディタでの変更の表示>>
* <<viewingFileStatus,ファイルのステータス情報の表示>>
* <<comparing,ファイル・リビジョンの比較>>
* <<committing,リポジトリへのソースのコミット>>
* <<updating,ローカル・コピーの更新>>
* <<committing,コミットの実行>>
* <<issues,問題の更新>>
* <<pushing,共有リポジトリへのローカルの変更のプッシュ>>
* <<summary,サマリー>>
* <<seeAlso,関連項目>>


== 要件

*このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |バージョン8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit+] (JDK) |バージョン7または8 

|link:http://www.selenic.com/mercurial/[+Mercurialクライアント・ソフトウェア+] |1.04またはそれ以降 
|===


== Mercurialの設定

IDEのMercurialサポートを活用するためには、システムにMercurialクライアント・ソフトウェアをインストールする必要があります。IDEがサポートしているMercurialクライアントのバージョンは1.04以降です。IDEのMercurialサポートは、Mercurialのコマンド行インタフェースと同じコマンドで動作します。

Mercurialは、ソースまたはバイナリ・パッケージのいずれかの形式で、link:http://www.selenic.com/mercurial/[+Mercurial Webサイト+]からダウンロードできます。

Mercurial実行可能ファイルのパスをIDEに設定するには:

1. メイン・メニューから「 ``ツール`` 」→「 ``オプション`` 」(OS Xでは「 ``NetBeans`` 」→ ``プリファレンス`` )を選択します。「オプション」ダイアログが開きます。
2. ダイアログの上部にある「チーム」アイコンを選択し、「バージョン管理」タブをクリックします。「バージョン管理システム」下の左側のペインで、「Mercurial」を選択します。ダイアログのメイン・ウィンドウに、Mercurialのユーザー定義オプションが表示されます。

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


. 「Mercurial実行可能ファイル・パス」テキスト・フィールドに、実行可能ファイルのパスを入力するか、または「参照」をクリックしてシステム上のその場所まで移動します。パスにMercurial実行可能ファイルを_含める_必要はありません。
. 「OK」をクリックします。

Mercurialクライアントの設定後に、IDEの「 ``チーム`` 」>「 ``Mercurial`` 」メニューから、Mercurialコマンドを実行できます。外部Mercurialリポジトリをクローンするには、「 ``チーム`` 」>「 ``Mercurial`` 」>「 ``他をクローン`` 」を選択します。クローンのプロセスで、IDEはクローンされるファイルのすべての履歴とステータス情報を自動的にインポートします。

既存のMercurialリポジトリがある場合、それらのファイルをIDEプロジェクトで開くか、それらを「お気に入り」ウィンドウに追加した場合に、IDEが自動的にそれらをバージョン管理されたファイルとして認識します。このファイルに対するMercurialコマンドは、Mercurialのメニューから、あるいはファイルまたはフォルダを右クリックしてMercurialのコンテキスト・メニューから選択することによって使用できます。

コマンド行を使用して、コンピュータにMercurialリポジトリを作成するには、次を入力します。


[source,bash]
----

hg clone /path/to/your/repository
----

*注意:* NetBeans Mercurialリポジトリ(link:http://hg.netbeans.org/[+http://hg.netbeans.org/+])は、このチュートリアルではデモの目的に使用します。


== ローカル・ファイルとリポジトリの同期

バージョン管理システムを使用する場合、ローカル・ファイルとリポジトリを同期させ、ローカル・コピーに変更を行い、それらをリポジトリにコミットすることによって作業します。次の一覧に、特定の状況に応じて、NetBeans IDEでプロジェクトを同期できる様々な方法を示します。

* <<opening,IDEでMercurialプロジェクトを開く>>
* <<checking,リポジトリからのファイルのチェックアウト>>
* <<importing,リポジトリへのファイルのインポート>>


=== IDEでMercurialプロジェクトを開く

IDEの外部で操作していたMercurialバージョン管理プロジェクトがすでに存在する場合、それをIDEで開くと、バージョン管理機能が自動的に使用可能になります。IDEは開いているプロジェクトをスキャンし、Mercurialバージョン管理プロジェクトに対して、ファイル・ステータスとコンテキスト依存のサポートを自動的にアクティブにします。


=== リポジトリからのファイルのチェックアウト

IDEからリモート・リポジトリに接続し、ファイルをチェックアウトし、それらをすぐに操作する場合、次を実行します。

1. NetBeans IDEで、メイン・メニューから「 ``チーム`` 」>「 ``Mercurial`` 」>「 ``他をクローン`` 」を選択します。クローン・ウィザードが開きます。

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

*注意: *IDEのドロップダウン・メニューはコンテキスト依存です。つまり、使用可能なオプションは現在選択されている項目によって異なります。そのため、すでにMercurialプロジェクト内で作業している場合、メイン・メニューから「 ``チーム`` 」>「 ``リモート`` 」>「 ``他をクローン`` 」を選択できます。


. 「リポジトリURL」に、リポジトリのパス( ``http://hg.netbeans.org/main`` など)を入力します。
. クローン・ウィザードに表示される「ユーザー」および「パスワード」フィールドに、netbeans.orgユーザー名およびパスワードを入力します。

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


. プロキシを使用している場合は、「プロキシ構成」ボタンをクリックし、「オプション」ダイアログ・ボックスに必要な情報を入力します。リポジトリへの接続設定が正しいことを確認したら、「次」をクリックします。
. 2番目のステップで、「デフォルトのプッシュ・パス」フィールドの右側の「変更」をクリックします。「プッシュ・パスの変更」ダイアログ・ボックスが開きます。

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


. NetBeansユーザー名とパスワードを追加し、プロトコルを ``https`` に変更して、デフォルトのプッシュ・エントリを変更します。
. 「パスを設定」をクリックします。「プッシュ・パスの変更」ダイアログ・ボックスが閉じます。
. 「次」をクリックして、ウィザードの3番目の手順に移動します。
. 「親ディレクトリ」フィールドで、リポジトリ・ファイルのチェックアウト先にするコンピュータ上の場所を入力します(または、「参照」ボタンを使用できます)。

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

*注意:* Windowsを実行している場合、指定するパスの長さに注意してください。つまり、 ``C:\Documents and Settings\myName\My Documents\NetBeans\etc\etc`` は、ファイルのパスが非常に長いため、クローンが成功しないことがあります。かわりに ``C:\`` を使用してみてください。


. 「チェックアウト後にNetBeansプロジェクトをスキャン」オプションを選択されたままにし、「終了」をクリックしてチェックアウト・アクションを開始します。
IDEによって指定したソースがチェックアウトされ、リポジトリからローカルの作業用ディレクトリへのファイルのダウンロードの進捗状況がIDEのステータス・バーに示されます。チェックアウト中のファイルを、「出力」ウィンドウから表示することもできます(Windowsでは[Ctrl]-[4]、OS Xでは[Command]-[4])。

*注意: *チェックアウトされたソースにNetBeansプロジェクトが含まれている場合、それらをIDEで開くように求めるダイアログ・ボックスが表示されます。ソースにプロジェクトが含まれていない場合は、ソースから新しいプロジェクトを作成し、IDEでそれらを開くことを求めるダイアログが表示されます。そのようなソースで新しいプロジェクトを作成する場合、適切なプロジェクト・カテゴリを選択し(新規プロジェクト・ウィザードで)、そのカテゴリ内の「既存のソースを使用する」オプションを使用します。


=== リポジトリへのファイルのインポート

または、IDEで操作していたプロジェクトをリモート・リポジトリにインポートし、同期されるようになった後に、IDEでそれを引続き操作できます。

*注意: *実際にはシステムからファイルを_エクスポート_しますが、「インポート」という用語は、バージョン管理システムで、ファイルがリポジトリに_インポート_されることを示すために使用されています。

プロジェクトをリポジトリにインポートするには:

1. 「プロジェクト」ウィンドウ(Windowsでは[Ctrl]-[1]、OS Xでは[Command]-[1])から、バージョン管理されていないプロジェクトを選択し、ノードの右クリック・メニューから「 ``チーム`` 」>「 ``Mercurial`` 」>「 ``リポジトリの初期化`` 」を選択します。リポジトリのルート・パス・ダイアログ・ボックスが開きます。

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


. リポジトリ内でプロジェクトを配置するリポジトリ・フォルダを指定します。「ルート・パス」テキスト・フィールドには、デフォルトで、プロジェクトの名前を含むフォルダが自動的に提案されます。
. 「OK」をクリックし、Mercurial初期化アクションを開始します。
「OK」をクリックすると、IDEによりプロジェクト・ファイルがリポジトリにアップロードされます。
「ウィンドウ」>「出力」を選択すると、「出力」ウィンドウが開いて進捗状況が表示されます。

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

*注意:* プロジェクト・ファイルをMercurialバージョン管理下に置くと、それらはリポジトリに「 ``ローカルで新規`` 」として登録されます。新しいファイルとそのステータスは、右クリック・メニューの「 ``Mercurial`` 」>「 ``変更を表示`` 」をクリックすると表示できます。

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


. プロジェクトの右クリック・メニューから「 ``Mercurial`` 」>「 ``コミット`` 」を選択し、これらのプロジェクト・ファイルをMercurialリポジトリにコミットします。「コミット - [プロジェクト名]」ダイアログ・ボックスが開きます。

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


. 「コミット・メッセージ」テキスト領域にメッセージを入力し、「コミット」をクリックします。

*注意:* コミットされたファイルが、 ``.hg`` ディレクトリと一緒にMercurialリポジトリ・ディレクトリに配置されます。コミットの詳細は、IDEの「出力」ウィンドウから表示することもできます(Windowsでは[Ctrl]-[4]、OS Xでは[Command]-[4])。


== ソースの編集

Mercurialバージョン管理プロジェクトをIDEで開くと、ソースの変更を開始できます。NetBeans IDEで開く任意のプロジェクトと同様に、(「プロジェクト」(Windowsでは[Ctrl]-[1]、OS Xでは[Command]-[1])、「ファイル」(Windowsでは[Ctrl]-[2]、OS Xでは[Command]-[2])、「お気に入り」(Windowsでは[Ctrl]-[3]、OS Xでは[Command]-[3])などの) IDEのウィンドウで表示されているファイルのノードをダブルクリックすると、ファイルをソース・エディタで開くことができます。

IDEのソースを操作する場合、自由に使用できる様々なUIコンポーネントがあります。これらは、表示およびバージョン管理コマンドの操作で役立ちます。

* <<viewingChanges,ソース・エディタでの変更の表示>>
* <<viewingFileStatus,ファイルのステータス情報の表示>>
* <<comparing,ファイル・リビジョンの比較>>
* <<merging,ファイル・リビジョンのマージ>>


=== ソース・エディタでの変更の表示

IDEのソース・エディタでバージョン管理されたファイルを開くと、リポジトリから以前にチェックアウトした基本バージョンに照らしあわせながら、そのファイルに行われた変更がリアル・タイムで表示されます。作業に伴って、IDEはソース・エディタのマージンに色分けを使用し、次の情報を伝えます。

|===
|*青* (     ) |古いリビジョンの後で変更された行を示します。 

|*緑* (     ) |古いリビジョンの後で追加された行を示します。 

|*赤* (     ) |古いリビジョンの後で除去された行を示します。 
|===

ソース・エディタの左側のマージンには、行ごとに発生した変更が表示されています。行を変更すると、その変更がすぐに左側のマージンに表示されます。

マージンの色のグループをクリックして、バージョン管理コマンドをコールできます。たとえば、左下のスクリーン・ショットは、赤いアイコンをクリックすると使用可能なウィジェットを示しており、ローカル・コピーから行が除去されたことを示します。

ソース・エディタの右側のマージンには、上から下に向かって、ファイル全体に行われた変更の概要が表示されます。ファイルに変更を行うと、すぐに色分けが生成されます。

マージンの特定の場所をクリックすると、インライン・カーソルがファイルのその場所にすぐに移動します。影響を受ける行数を表示するには、右側のマージンの色つきアイコンの上にマウスを動かします。

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

*左側のマージン* 

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

*右側のマージン* 


=== ファイルのステータス情報の表示

「プロジェクト」(Windowsでは[Ctrl]-[1]、OS Xでは[Command]-[1])、「ファイル」(Windowsでは[Ctrl]-[2]、OS Xでは[Command]-[2])、「お気に入り」(Windowsでは[Ctrl]-[3]、OS Xでは[Command]-[3])、または「バージョン管理」ウィンドウで作業する場合、IDEには、ファイルのステータス情報を表示するのに役立つ視覚機能がいくつかあります。次の例では、バッジ(例: image:images/blue-badge.png[])、ファイル名の色、および隣接するステータス・ラベルすべての相互の対応方法を確認し、ファイルに対するバージョン管理情報をトラックする単純だが効果的な方法について説明します。

image::images/badge-example.png[]

*注意:* ステータス・ラベルは、「バージョン管理」、「プロジェクト」および「ファイル」ウィンドウのファイル・ステータスをテキストで示します。ステータス・ラベルを表示するには、メイン・ツールバーから「表示」→「バージョン・ラベルを表示」を選択します。

バッジ、色分け、ファイル・ステータス・ラベル、およびおそらく最も重要なバージョン管理ウィンドウはすべて、効果的な表示および管理能力、およびIDEでのバージョン管理情報に貢献します。

* <<badges,バッジと色分け>>
* <<fileStatus,ファイル・ステータス・ラベル>>
* <<versioning,バージョン管理ウィンドウ>>


==== バッジと色分け

バッジはプロジェクト、フォルダおよびパッケージ・ノードに適用され、そのノードに含まれているファイルのステータスを示します。

バッジに使用される色のスキームを次の表に示します。

|===
|UIコンポーネント |説明 

|*青のバッジ*(image:images/blue-badge.png[]) |ローカルに変更、追加、または削除されたファイルの存在を示します。パッケージの場合、このバッジは、パッケージ自体にのみ適用され、そのサブパッケージには適用されません。プロジェクトまたはフォルダの場合、このバッジはその項目または含まれるサブフォルダ内の内容の変更を示します。 

|*赤のバッジ*(image:images/red-badge.png[]) |_競合する_ファイル(リポジトリに保存されているバージョンと競合するローカル・バージョン)を含むプロジェクト、フォルダまたはパッケージをマークします。パッケージの場合、このバッジは、パッケージ自体にのみ適用され、そのサブパッケージには適用されません。プロジェクトまたはフォルダの場合、このバッジはその項目または含まれるサブフォルダ内の競合を示しています。 
|===

色分けは、リポジトリに照らして、現在のステータスを示す目的でファイル名に適用されます。

|===
|色 |例 |説明 

|*青* |image:images/blue-text.png[] |ファイルがローカルに変更されたことを示します。 

|*緑* |image:images/green-text.png[] |ファイルがローカルに追加されたことを示します。 

|*赤* |image:images/red-text.png[] |ファイルに、ローカル作業コピーとリポジトリのバージョン間の競合が含まれることを示します。 

|*グレー* |image:images/gray-text.png[] |ファイルがMercurialによって無視され、バージョン管理コマンド(更新やコミットなど)に含まれないことを示します。まだバージョン管理されていない場合にのみ、ファイルが無視されます。 

|*取消し線* |image:images/strike-through-text.png[] |ファイルがコミット操作から除外されることを示します。取消し線テキストは、個々のファイルをコミット・アクションから除外することを選択すると、「バージョン管理」ウィンドウや「コミット」ダイアログなどの特定の場所にのみ表示されます。そのようなファイルは、「更新」など、他のMercurialコマンドの影響は引続き受けます。 
|===


==== ファイル・ステータス・ラベル

ファイル・ステータス・ラベルは、バージョン管理ファイルのステータスを、IDEのウィンドウにテキストで示します。デフォルトで、IDEは、ファイルをウィンドウに一覧表示するときに、そのファイルの右側にステータス情報(新規、変更済、無視など)およびフォルダ情報をグレー・テキストで表示します。ただし、この形式は独自のものに変更できます。たとえば、リビジョン番号をステータス・ラベルに追加する場合は、次を実行します。

1. メイン・メニューから「 ``ツール`` 」→「 ``オプション`` 」(OS Xでは「 ``NetBeans`` 」→ ``プリファレンス`` )を選択します。「オプション」ウィンドウが開きます。
2. ウィンドウの上部にある「チーム」ボタンを選択し、その下にある「バージョン管理」タブをクリックします。左側のパネルの「バージョン管理システム」の下のMercurialが選択されていることを確認します。
3. ファイルの右側にステータスとフォルダのみが表示されるようにステータス・ラベルを再フォーマットするには、「ステータス・ラベル形式」テキスト・フィールドの内容を次のように再整理します。

[source,java]
----

[{status}; {folder}]
----
「OK」をクリックします。これでステータス・ラベルにはファイルのステータスとフォルダ(該当する場合)が表示されます。

image::images/file-labels.png[]

ファイル・ステータス・ラベルは、メイン・メニューから「 ``表示`` 」>「 ``バージョン・ラベルを表示`` 」を選択して、オンとオフを切り替えできます。


==== バージョン管理ウィンドウ

Mercurialバージョン管理ウィンドウは、ローカルの作業コピーの選択されたフォルダ内でファイルに行われた変更のすべてを、リアル・タイムで一覧表示します。これはIDEの下のパネルにデフォルトで開き、追加、削除または変更されたファイルを一覧表示します。

バージョン管理ウィンドウを開くには、(「プロジェクト」ウィンドウ、「ファイル」ウィンドウまたは「お気に入り」ウィンドウなどから)バージョン管理ファイルまたはフォルダを選択し、右クリック・メニューから「 ``Mercurial`` 」>「 ``変更を表示`` 」を選択するか、またはメイン・メニューから「 ``チーム`` 」>「 ``Mercurial`` 」>「 ``変更を表示`` 」を選択します。IDEの最下部に次のウィンドウが表示されます。

image::images/versioning-window.png[]

デフォルトでは、「バージョン管理」ウィンドウは、選択されたパッケージまたはフォルダ内の変更されたすべてのファイルを一覧表示します。ツールバーにあるボタンを使用することによって、すべての変更を表示するか、表示されるファイルの一覧をローカルまたはリモートで変更されたファイルに制限できます。一覧表示されたファイルの上にある列の見出しをクリックして、名前、ステータス、または場所でファイルをソートすることもできます。

「バージョン管理」ウィンドウのツールバーには、一覧に表示されているすべてのファイルに対して一般的なMercurialタスクを呼び出すことができるボタンも用意されています。次の表は、「バージョン管理」ウィンドウのツールバーにあるMercurialコマンドをまとめています。

|===
|アイコン |名前 |機能 

|image:images/refresh.png[] |*ステータスのリフレッシュ* |選択したファイルとフォルダのステータスをリフレッシュします。「バージョン管理」ウィンドウに表示されたファイルは、外部で行われた可能性のある任意の変更を反映してリフレッシュできます。 

|image:images/diff.png[] |*すべて差分を取得* |差分ビューアを開くと、ローカルのコピーとリポジトリで保持されているバージョンを並べた比較が表示されます。 

|image:images/update.png[] |*すべて更新* |リポジトリから選択したファイルをすべて更新します。 

|image:images/commit.png[] |*すべてコミット* |ローカルの変更をリポジトリにコミットできます。 
|===

「バージョン管理」ウィンドウで、変更したファイルに対応する表の行を選択し、右クリック・メニューからコマンドを選択すると、他のMercurialコマンドにアクセスできます。

たとえば、ファイルでは次のアクションを実行できます。

|===
|* *注釈を表示*: ソース・エディタで開かれているファイルの左側のマージンに、作成者、リビジョン番号情報を表示します。
 |image:images/annotations.png[] 

|* *変更内容を元に戻す*: ローカルの変更をリポジトリで管理されているリビジョンに戻す場合のパラメータを指定するために使用できる「変更内容を元に戻す」ダイアログを開きます。
 |[.feature]
--
image:images/search-rev-small.png[role="left", link="images/search-rev.png"]
--
 
|===


=== ファイル・リビジョンの比較

ファイル・リビジョンの比較は、バージョン管理されているプロジェクトを操作する場合に一般的なタスクです。差分コマンドを使用すると、IDEでリビジョンを比較できます。差分コマンドは、選択した項目の右クリック・メニュー(「 ``Mercurial`` 」>「 ``差分`` 」>「 ``ベースとの差分`` 」または「 ``Mercurial`` 」>「 ``差分`` 」>「 ``リビジョンとの差分`` 」)および「バージョン管理」ウィンドウから使用できます。「バージョン管理」ウィンドウで、差分を実行するには、リストされているファイルをダブルクリックするか、上部のツールバーにある「すべて差分を取得」アイコン(image:images/diff.png[])をクリックします。

差分の取得を実行すると、選択したファイルとリビジョンについてグラフィカルな差分ビューアがIDEのメイン・ウィンドウで開きます。差分ビューアには2つのコピーが並んだパネルに表示されます。右側により現在に近いコピーが表示されるため、作業コピーに対してリポジトリ・リビジョンを比較すると、右パネルに作業コピーが表示されます。

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

差分ビューアは、バージョン管理の変更を表示する場所に使用されているのと同じ<<viewingChanges,色分け>>を利用します。前に表示したスクリーン・ショットの緑色のブロックは、より現在に近いリビジョンに追加された内容を示します。赤いブロックは、前のリビジョンの内容が、より最近のリビジョンから除去されたことを示します。青は、強調表示された行で変更が発生したことを示します。

また、プロジェクト、パッケージまたはフォルダなどのグループで差分を実行する場合、あるいは「すべて差分を取得」(image:images/diff.png[])をクリックする場合は、差分ビューアの上部領域にリストされているファイルをクリックすると、差分を切り替えることができます。

差分ビューアには次の機能もあります。

* <<makeChanges,ローカル作業コピーへの変更の実行>>
* <<navigateDifferences,差分間の移動>>


==== ローカル作業コピーへの変更の実行

ローカル作業コピーで差分の取得を実行する場合、IDEの差分ビューア内から直接変更を行うことができます。これを行うには、カーソルを差分ビューアの右ペインに置き、それに従ってファイルを変更するか、または強調表示された各変更の前後で表示されるインライン・アイコンを使用します。

|===
|*置換*(image:images/insert.png[]): |前のリビジョンから現在のリビジョンに、強調表示されたテキストを挿入します。 

|*すべて移動*(image:images/arrow.png[]): |ファイルの現在のリビジョンを、選択した前のリビジョンの状態に戻します。 

|*除去*(image:images/remove.png[]): |現在のリビジョンから強調表示されているテキストを除去し、以前のリビジョンを反映させます。 
|===


==== 比較したファイルの相違間をナビゲート

差分に複数の違いが含まれている場合、ツールバーに表示された矢印アイコンを使用して、それらをナビゲートできます。矢印アイコンを使用すると、差分を上から下へ出現順に表示できます。

|===
|*前*(image:images/diff-prev.png[]): |差分内で、前に表示された差分に移動します。 

|*次*(image:images/diff-next.png[]): |差分内で、次に表示された差分に移動します。 
|===


=== ファイル・リビジョンのマージ

NetBeans IDEでは、リポジトリ・リビジョンとローカル作業コピー間で変更をマージできます。具体的には、リポジトリ内の2つの別個の変更セットを、それらの組合せ方法を記述する新しい変更セットに組み合せます。

1. 「プロジェクト」ウィンドウ、「ファイル」ウィンドウまたは「お気に入り」ウィンドウで、マージ操作の実行先のファイルまたはフォルダを右クリックし、「 ``Mercurial`` 」>「 ``分岐/タグ`` 」>「 ``変更をマージ`` 」を選択します。「リビジョンとマージ」ダイアログが表示されます。
2. 「リビジョンから選択」ドロップダウン・リストから、リビジョンを選択します。ローカル作業コピー・ファイルの作成時からのすべての変更を移植します。
3. 「説明」、「作成者」および「日付」データが正しいことを確認します。

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


. 「マージ」をクリックします。IDEによって、リポジトリ・リビジョンとファイルのローカル・コピー間に検出されたすべての相違が取り込まれます。マージ競合が発生した場合、ファイルのステータスはこれを示すために「<<resolving,競合をマージ>>」に更新されます。

*注意:* リビジョンをローカル作業コピーにマージした後、それらをリポジトリに追加するには、「コミット」コマンドを使用して、変更をコミットする必要があります。


== リポジトリへのソースのコミット

ソースに変更を加えた後は、それらをリポジトリにコミットします。一般に、競合が発生しないようにするため、コミットを実行する前に、リポジトリに照らして存在するコピーをすべて更新することをお薦めします。ただし、競合は発生する可能性があり、多くの開発者がプロジェクトを同時に操作する場合には自然な出来事であると考える必要があります。IDEでは、これらのすべての機能を実行できる柔軟なサポートを提供しています。さらに、競合が発生したときに、それらを安全に処理できる競合リゾルバも提供しています。

* <<updating,ローカル・コピーの更新>>
* <<performing,コミットの実行>>
* <<issues,問題の更新>>
* <<pushing,共有リポジトリへのローカルの変更のプッシュ>>


=== ローカル・コピーの更新

更新を実行するには、メイン・メニューから「 ``チーム`` 」>「 ``更新`` 」を選択します。

変更したソースに対して更新を実行するには、「すべて更新」アイコン(image:images/update.png[])をクリックしますが、このアイコンは<<versioning,「バージョン管理」ウィンドウ>>と<<comparing,差分ビューア>>の両方の上部にあるツールバーに表示されます。リポジトリで行われた変更は、「バージョン管理の出力」ウィンドウに表示されます。


=== コミットの実行

ソース・ファイルの編集、更新の実行および競合の解決後、ローカル作業コピーからファイルをリポジトリにコミットします。IDEでは、次の方法でコミット・コマンドをコールできます。

* 「プロジェクト」、「ファイル」または「お気に入り」ウィンドウで、新規または変更した項目を右クリックし、「 ``Mercurial`` 」>「 ``コミット`` 」を選択します。
* 「バージョン管理」ウィンドウまたは差分ビューアから、ツールバーにある「すべてコミット」(image:images/commit.png[])ボタンをクリックします。

「コミット」ダイアログが開き、リポジトリにコミットされるファイルが表示されます。

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

「コミット」ダイアログには、次が表示されます。

* ローカルで変更されたすべてのファイル
* ローカルで削除されたすべてのファイル
* すべての新規ファイル(リポジトリにまだ存在しないファイル)
* 名前を変更したすべてのファイル。Mercurialは元のファイルを削除し、新しい名前で複製を作成して、名前が変更されたファイルを処理します。

「コミット」ダイアログで、コミットから個々のファイルを除外するかどうかを指定できます。これを行うには、選択したファイルの「コミット・アクション」列をクリックして、ドロップダウン・リストから「コミットから除外」を選択します。

コミットを実行するには:

1. 「コミット・メッセージ」テキスト領域にコミット・メッセージを入力します。または、右上隅にある「最近のメッセージ」(image:images/recent-msgs.png[])アイコンをクリックして、以前使用したメッセージのリストを表示して選択します。
2. 個々のファイルのアクションを指定して「コミット」をクリックします。IDEによってコミットが実行され、ローカルの変更がリポジトリに送信されます。コミット・アクションが実行されると、インタフェースの右下にあるIDEのステータス・バーが表示されます。コミットに成功すると、「プロジェクト」、「ファイル」および「お気に入り」ウィンドウのバージョン管理バッジが消え、コミットされたファイルの色分けが黒に戻ります。


=== 問題の更新

問題を更新するには、リポジトリの問題トラッカで既存の問題にコミット・アクションを関連付けます。これを実行するには、「コミット」ダイアログ・ボックスの「問題を更新」見出しをクリックして展開し、次を指定します。

* *問題トラッカ:* ドロップダウン・リストから問題トラッカを選択して、リポジトリで使用する問題トラッカを指定します。ドロップダウンには、IDEに登録されているすべての問題トラッカの一覧が表示されます。リポジトリの問題トラッカが登録されていない場合は、「新規作成」ボタンをクリックして登録します。
* *問題:* 問題IDを指定します。これを実行するには、IDを入力するか、説明の一部を入力します。

また、次のオプションを指定できます。

* *修正済みとして解決:* 選択した場合、問題のステータスが「解決」とマークされます。
* *上で入力したコミット・メッセージを追加:* 選択した場合、コミット・メッセージが問題に追加されます。
* *問題にリビジョン情報を追加:* 選択した場合、問題が作成者、日付などのリビジョン情報を含めるように更新されます。「書式の変更」をクリックして、問題に追加されるリビジョン情報の書式を変更できます。
* *コミット・メッセージに問題情報を追加:* 選択した場合、問題IDとサマリーがコミット・メッセージに追加されます。「書式の変更」をクリックして、メッセージに追加される問題情報の書式を変更できます。
* *コミット後:* 選択した場合、変更のコミット後に問題が更新されます。
* *プッシュ後:* 選択した場合、変更がリポジトリにプッシュされた後にのみ問題が更新されます。


=== 共有リポジトリへのローカルの変更のプッシュ

ローカルでコミットした変更を共有リポジトリにプッシュする前に、ローカル・リポジトリと共有リポジトリを同期させる必要があります。これを「フェッチ」コマンドで実行するには、メイン・メニューから「 ``チーム`` 」>(「 ``Mercurial`` 」>)「 ``リモート`` 」>「 ``フェッチ`` 」を選択します。「フェッチ」の成功後、ローカル・リポジトリが共有リポジトリと同期されます。

変更をプッシュするには、メイン・メニューから「 ``チーム`` 」>(「 ``Mercurial`` 」>)「 ``リモート`` 」>「 ``現在の分岐をプッシュ`` 」、「 ``チーム`` 」>(「 ``Mercurial`` 」>)「 ``リモート`` 」>「 ``すべての分岐をプッシュ`` 」、または「 ``チーム`` 」>(「 ``Mercurial`` 」>)「 ``リモート`` 」>「 ``プッシュ`` 」を選択します。成功したプッシュの出力に、作成された変更セットが表示されます。

*注意:* システムでリポジトリ全体のコピーを管理しているため、一般的な方法は、ローカル・リポジトリに複数のコミットを行い、特定のタスクの完了後にのみ、共有リポジトリへのプッシュを実行します。


== サマリー

このチュートリアルでは、IDEのMercurialサポートを使用する場合の標準的なワークフローを説明することによって、IDEの基本的なバージョン管理タスクの実行方法を示しました。IDEに含まれるMercurial固有の機能の一部を紹介しながら、バージョン管理されたプロジェクトの設定とバージョン管理されたファイルの基本タスクの実行方法を示しました。

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Mercurial%20Support%20in%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]



== 関連項目

関連する資料については、次のドキュメントを参照してください。

* link:http://wiki.netbeans.org/HgNetBeansSources[+IDEでのMercurialを使用したNetBeansソースの操作+]
* link:mercurial-queues.html[+NetBeans IDEでのMercurial Queuesサポートの使用+]
* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+バージョン管理によるアプリケーションのバージョニング+]
