// 
//     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でのCVSサポートの使用
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのCVSサポートの使用 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのCVSサポートの使用

NetBeans IDEのCVSサポートは、共有リポジトリから作業するグループの開発プロセスを効率化するように設計され、IDE内で、プロジェクト・システムから直接バージョン管理タスクを実行できます。CVSクライアント・ソフトウェアは、NetBeans IDEにバンドルされているため、CVSの使用を開始するために特別な設定は必要ありません。

このドキュメントでは、バージョン管理ソフトウェアを使用する場合の標準的なワークフローを説明することによって、IDEの基本的なバージョン管理タスクの実行方法を示します。

CVS (Concurrent Versions System)は一連のファイルのすべての作業と変更を追跡するオープン・ソース・バージョン管理システムです。これは、一般にソフトウェア・プロジェクトの実装時に使用され、複数の開発者がコラボレーションできます。CVSの詳細は、link:http://ximbiot.com/cvs/[+公式ドキュメント+]をお読みください。

*注意:* NetBeans IDE 7.0.1以降、NetBeans IDE更新センターからのCVSプラグインのインストール後に、CVSサポートが使用できるようになりました。詳細は、link:http://wiki.netbeans.org/CVSSupport[+CVS FAQ+]ページを参照してください。


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


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

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

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

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン6以降 
|===


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

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

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


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

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


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

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

1. NetBeans IDEで、メイン・メニューから「チーム」>「CVS」>「チェックアウト」を選択します。チェックアウト・ウィザードが開きます。

*注意: *IDEのドロップダウン・メニューはコンテキスト依存です。つまり、使用可能なオプションは現在選択されている項目によって異なります。そのため、すでにCVSプロジェクト内で作業している場合、メイン・メニューから「バージョン管理」>「チェックアウト」を選択できます。
2. ウィザードの最初のパネルで、`CVSROOT`で定義できるリポジトリの場所を入力します。

IDEでは、CVSリポジトリがローカルかリモートか、およびそれに接続するために使用する方法に応じて、多くの`CVSROOT`形式をサポートしています。

|===
|メソッド |説明 |例 

|*pserver* |リモート・パスワード・サーバー |`:pserver:username@hostname:/repository_path` 

|*ext* |リモート・シェル(RSH)またはSecure Shell (SSH)を使用したアクセス |`:ext:username@hostname:/repository_path` 

|*local* |ローカル・リポジトリへのアクセス |`:local:/repository_path`
[float-right]#(外部のCVS実行可能ファイルが必要)# 

|*fork* |リモート・プロトコルを使用したローカル・リポジトリへのアクセス |`:fork:/repository_path`
[float-right]#(外部のCVS実行可能ファイルが必要)# 
|===

使用する方法に応じて、リモート・リポジトリへ接続するためのパスワードやプロキシ設定(`pserver`の場合など)などのその他の情報を指定する必要がある場合があります。「次」をクリックします。

NOTE: 公開鍵SSH認証を設定しようとする場合は、link:http://wiki.netbeans.org/wiki/view/FaqHowToSetUpSSHAuth[+公開鍵SSH認証の設定方法+]を参照してください。

ローカル・リポジトリへのアクセスに関する詳細は、link:http://wiki.netbeans.org/wiki/view/FaqHowToAccessLocalCVS[+ローカル・リポジトリにアクセスする方法+]を参照してください。

[start=3]
1. ウィザードの「チェックアウトするモジュール」パネルで、「モジュール」フィールドにチェックアウトするモジュールを指定します。チェックアウトするモジュールの名前がわからない場合、「参照」ボタンをクリックして、リポジトリの内容を表示します。表示された「CVSモジュールを参照」ダイアログから、表示されているいずれかのモジュールを選択し、「OK」をクリックします。これで、選択が「モジュール」フィールドに追加されます。

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

[start=4]
1. 「分岐」テキスト・フィールドで、チェックアウトする分岐の名前を入力します。「参照」ボタンをクリックすると、「タグを参照」ダイアログ・ボックスが開き、使用可能な分岐とタグを検索できます。分岐とタグのどちらも指定しなかった場合は、_トランク_がチェックアウトされます。
2. 「ローカル・フォルダ」フィールドで、ファイルのチェックアウト先にするコンピュータ上の場所を入力し、「終了」をクリックして、CVSチェックアウトを開始します。IDEによって指定されたソースがチェックアウトされ、右下隅のIDEのステータス・バーに、リポジトリからローカル・ディレクトリへのファイルのダウンロードの進捗状況が示されます。チェックアウト中のファイルを、「出力」ウィンドウから表示することもできます(Ctrl-4)。

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


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

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

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

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

1. 「プロジェクト」ウィンドウ(Ctrl-1)から、バージョン管理されていないプロジェクトを選択し、ノードの右クリック・メニューから「バージョン管理」>「CVSリポジトリにインポート」を選択します。CVSのインポート・ウィザードが開きます。
2. インポート・ウィザードの「CVSルート」パネルで、<<protocolTypes,`CVSROOT`>>で定義されるリポジトリの場所を指定します。使用する方法に応じて、リモート・リポジトリへ接続するためのパスワードやプロキシ設定(`pserver`の場合など)などのその他の情報を指定する必要がある場合があります。「次」をクリックします。
3. 「インポートするフォルダ」パネルで、リポジトリ内に配置するローカル・フォルダを指定します。「インポートするフォルダ」テキスト・フィールドには、デフォルトで、プロジェクトの名前が自動的に提案されます。

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

[start=4]
1. 「インポート・メッセージ」テキスト領域に、リポジトリにインポートしようとしているプロジェクトの説明を入力します。
2. 「リポジトリ・フォルダ」テキスト・フィールドにパスを入力して、プロジェクトをインポートするリポジトリ内の場所を指定します。または、「参照」ボタンをクリックして、リポジトリ内の特定の場所に移動します。「終了」をクリックして、インポートを開始します。IDEによってプロジェクト・ファイルがリポジトリにアップロードされ、「出力」ウィンドウが開き、進捗状況が表示されます。

NOTE: CVSクライアントでは、デフォルトでバイナリ・ファイルのインポートを処理しません。バイナリ・ソースをインポートする場合のベスト・プラクティスは、リポジトリ内に`cvswrappers`ファイルを作成することです。詳細は、link:http://wiki.netbeans.org/FaqCVSHowToImportBinaries[+バイナリ・ファイルを正しくインポートする方法+]を参照してください。


== ソースの編集

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

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

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


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

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

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

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

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

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

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

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

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

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

*左側のマージン* |image::images/right-ui.png[title="エディタの右側のマージンに表示されたバージョン管理の色分け"]
*右側のマージン* 
|===


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

「プロジェクト」(Ctrl-1)、「ファイル」(Ctrl-2)、「お気に入り」(Ctrl-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[] |ファイルがCVSによって無視され、バージョン管理コマンド(更新およびコミット)に含まれないことを示します。まだバージョン管理されていない場合にのみ、ファイルが無視されます。 

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


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

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

1. メイン・メニューから「ツール」>「オプション」(Macでは「NetBeans」>「プリファレンス」)を選択します。「オプション」ウィンドウが開きます。
2. ウィンドウの上部にある「その他」ボタンを選択し、その下にある「バージョン管理」タブをクリックします。左側のパネルの「バージョン管理システム」の下の「CVS」が選択されていることを確認します。

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

[start=3]
1. 「ステータス・ラベル形式」テキスト・フィールドの右側の「変数を追加」ボタンをクリックします。表示される「変数を追加」ダイアログで`{revision}`変数を選択し、「OK」をクリックします。「ステータス・ラベル形式」テキスト・フィールドに、リビジョン変数が追加されます。
2. ファイルの右側にステータスとリビジョンのみが表示されるようにステータス・ラベルを再フォーマットするには、「ステータス・ラベル形式」テキスト・フィールドの内容を次のように再整理します。

[source,java]
----

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

image::images/cvs-right-click.png[]

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

|===
|* *注釈を表示*: 

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

|* *履歴を検索*: 

IDEの履歴ビューアで選択したファイルの複数のリビジョンを検索して比較できます。履歴ビューアから、<<comparing,差分>>を取得したり、選択したリビジョンにローカル・コピーをロール・バックしたりすることもできます。
 |[.feature]
--
image::images/history-viewer-small.png[role="left", link="images/history-viewer.png"]
--
 

|* *コミットから除外*: 

コミットを実行するときに除外するファイルをマークできます。
 |[.feature]
--
image::images/exclude-from-commit-small.png[role="left", link="images/exclude-from-commit.png"]
--
 

|* *変更内容を元に戻す*: 

「上書きを確認」ダイアログを開き、ローカル作業コピー内のファイルにコミットした任意のアクションを元に戻すことができます。
 |[.feature]
--
image::images/cvs-confirm-overwrite-small.png[role="left", link="images/cvs-confirm-overwrite.png"]
--
 
|===


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

ファイル・リビジョンの比較は、バージョン管理されているプロジェクトを操作する場合に一般的なタスクです。差分コマンドを使用すると、IDEでリビジョンを比較できます。差分コマンドは、選択した項目の右クリック・メニュー(「CVS」>「差分」)および「バージョン管理」ウィンドウから使用できます。「バージョン管理」ウィンドウで、差分を実行するには、リストされているファイルをダブルクリックするか、上部のツールバーにある「すべて差分を取得」アイコン(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,差分間の移動>>
* <<changeViewCriteria,表示条件の変更>>


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

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

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

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

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


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

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

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

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


==== 表示条件の変更

ローカル作業コピー、リポジトリ、またはその両方からの変更を含むファイルを同時に表示するかどうかを選択できます。

|===
|*ローカル*(image::images/locally-mod.png[]): |ローカルで変更されたファイルのみを表示します。 

|*リモート*(image::images/remotely-mod.png[]): |リモートで変更されたファイルのみを表示します。 

|*両方*(image::images/both-mod.png[]): |ローカルとリモートの両方で変更されたファイルを表示します。 
|===


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

NetBeans IDEでは、リポジトリの異なる分岐で行われた変更をローカル作業コピーにマージできます。CVS「マージ」ダイアログを使用して、作業コピーにマージするリポジトリ・ソースを示す条件を指定するのみで済みます。

次の単純な使用事例に、「マージ」ダイアログを適用して、完全な分岐をトランクのヘッドにマージする方法を示します。


|===
|*使用事例:* |プロジェクトの新機能の開発を開始するリクエストがあるため、プロジェクトのトランクの現在の状態から新しい分岐が作成されます。必要なすべての作業が実行され、分岐内のコードが十分に安定した後に、新しい機能をトランクに統合します。 
|===

1. プロジェクトの新しい分岐を作成するには、プロジェクト・ノードを右クリックし、「CVS」>「分岐」を選択します。「分岐」ダイアログで、分岐名として「`new_feature`」と入力し、「完了後にこの分岐に切替え」オプションが選択されていることを確認します。

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

「分岐」ボタンをクリックします。リポジトリに新しい分岐が作成され、IDEによってターゲット・リポジトリの場所が新しい分岐に切り替えられます。「プロジェクト」ウィンドウで、バージョン管理されるファイルの横に新しい分岐名がグレーのテキストで表示され、分岐から作業できるようになったことが示されます。

*注意: *<<fileStatus,ファイル・ステータス・ラベル>>がアクティブ化されていることを確認してください(メイン・メニューから「表示」>「バージョン・ラベルを表示」を選択)。

[start=2]
1. ファイルを編集し、ファイルを追加し、ファイルを削除します。すべての変更をコミットします。
2. 新しい機能の準備ができたら、トランクに戻ります。2つの分岐間でマージを実行する場合、ターゲット分岐(この例ではトランク)で作業している必要があります。プロジェクト・ノードを右クリックし、「CVS」>「分岐に切替え」を選択します。表示されるダイアログで、「トランクに切替え」を選択し、「切替え」をクリックします。

IDEによってターゲット・リポジトリの場所がトランクに切り替えられます。「プロジェクト」ウィンドウで、ファイル・ステータス・ラベルが新しい作業場所を反映するように自動的に更新されます。

[start=4]
1. マージを実行するには、プロジェクト・ノードを右クリックし、「CVS」>「分岐での変更をマージ」を選択します。表示されるダイアログで、作業中の分岐に変更をマージ・フィールドに`Trunk`が含まれ、現在の作業場所が示されています。

ダイアログで、次の条件を指定します。
* 分岐の作成後のすべての変更をマージするため、「開始」オプションを「分岐ポイント/ 分岐ルート」に設定されたままにします。
* 「まで」オプションで、「分岐の先頭」を選択し、トランクにマージする分岐の名前を入力します。「参照」をクリックして、リポジトリ内の既存の分岐から検索することもできます。
* マージ後にリビジョンにタグ付けする場合は、「マージ後にトランクにタグ付け」を選択し、選択するタグ名を入力します。

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

「マージ」をクリックします。IDEによって分岐がトランクに組み込まれます。処理でマージ競合が発生した場合、プロジェクトのステータスはこれを示すために「<<resolving,競合をマージ>>」に更新されます。

*注意:* 分岐でのファイルの変更をローカルの作業用ディレクトリにマージした後、その変更をリポジトリに追加するには、「コミット」コマンドを使用して、変更をコミットする必要があります。


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

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

* <<updating,ローカル・コピーの更新>>
* <<resolving,競合の解決>>
* <<performing,コミットの実行>>


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

「プロジェクト」、「ファイル」または「お気に入り」ウィンドウのバージョン管理された項目の右クリック・メニューから、「CVS」>「更新」を選択して、更新を実行できます。「バージョン管理」ウィンドウから直接作業する場合、表示されているファイルを右クリックし、「更新」を選択するのみで済みます。

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


=== 競合の解決

更新またはコミットを実行する場合、IDEのCVSサポートはファイルとリポジトリ・ソースを比較して、同じ場所で他の変更がまだ行われていないことを確認します。以前のチェックアウト(または更新)がリポジトリ_HEAD_ (つまり最新のリビジョン)と一致しなくなり、_さらに_ローカル作業コピーに適用した変更が、変更されたHEADの領域と一致する場合、更新またはコミットは、_競合_になります。

<<badges,バッジと色分け>>に示されているように、競合はIDEで赤のテキストで表示され、「プロジェクト」、「ファイル」または「お気に入り」ウィンドウで表示した場合に、赤のバッジ(image::images/red-badge.png[])が付けられます。「バージョン管理」ウィンドウで作業する場合、競合はファイルのステータスによっても示されます。

image::images/cvs-conflict-versioning-win.png[]

ファイルをリポジトリにコミットする前に、発生したすべての競合を解決する必要があります。IDEで競合を解決するには、マージ競合リゾルバを使用します。マージ競合リゾルバは、変更を行ったときに、マージ済出力を表示しながら、個々の競合に順番に対処できる直観的なインタフェースを備えています。競合しているファイルについてマージ競合リゾルバにアクセスするには、そのファイルを右クリックし、「CVS」>「競合を解決」を選択します。

マージ競合リゾルバは、競合のある2つのリビジョンを上のペインに横に並べて表示し、競合領域は強調表示されます。下部のペインは、2つのリビジョン間の個々の競合のマージが行われると表示されるファイルを示します。

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

上部のペインに表示される2つのリビジョンのいずれかを採用することで競合を解決します。採用するリビジョンの「同意」ボタンをクリックします。IDEによって、採用されたリビジョンがソース・ファイルにマージされ、マージ競合リゾルバの下のペインにマージの結果がすぐに表示されます。すべての競合を解決したら、「OK」をクリックしてマージ競合リゾルバを終了し、変更したファイルを保存します。競合を示すバッジが除去され、これで、変更したファイルをリポジトリにコミットできます。


=== コミットの実行

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

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

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

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

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

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

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

イメージ・ファイルなど、新しいバイナリ・ファイルが含まれる場合、それらが自動的にバイナリ・ファイルとして検出されます。「コミット・アクション」列のドロップダウン・リストから「バイナリとして追加」または「テキストとして追加」を選択して、ファイルのMIMEタイプを指定できます。

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

1. 「コミット・メッセージ」テキスト領域にコミット・メッセージを入力します。または、右上隅にある「最近のメッセージ」(image::images/recent-msgs.png[])アイコンをクリックして、以前使用したメッセージのリストを表示して選択します。
2. 個々のファイルのアクションを指定して「コミット」をクリックします。IDEによってコミットが実行され、ローカルの変更がリポジトリに送信されます。コミット・アクションが実行されると、インタフェースの右下にあるIDEのステータス・バーが表示されます。コミットに成功すると、「プロジェクト」、「ファイル」および「お気に入り」ウィンドウのバージョン管理バッジが消え、コミットされたファイルの色分けが黒に戻ります。
link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20CVS%20Support%20in%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]



== 関連項目

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

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

* link:http://wiki.netbeans.org/NetBeansUserFAQ#CVS[+NetBeans IDEでのCVSサポートのFAQ+]。NetBeans IDEでのCVSの設定と使用方法に関して、よくある質問への説明を含むドキュメントです。
* link:git.html[+NetBeans IDEでのGitサポートの使用+]。NetBeans IDEでのGitバージョン管理クライアントの使用方法についてのガイドです。
* link:mercurial.html[+NetBeans IDEでのMercurialサポートの使用+]。NetBeans IDEでのMercurialバージョン管理クライアントの使用方法についてのガイドです。
* link:subversion.html[+NetBeans IDEでのSubversionサポートの使用+]。NetBeans IDE 6.xでのSubversionバージョン管理の使用方法についてのガイドです。
* link:clearcase.html[+NetBeans IDEでのClearCaseサポートの使用+]。IDEでのClearCaseバージョン管理機能の使用方法についての紹介です。
* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+バージョン管理によるアプリケーションのバージョニング+]。
