// 
//     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.
//

= Использование поддержки CVS в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Использование поддержки CVS в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Использование поддержки CVS в IDE NetBeans

Поддержка CVS IDE NetBeans разработана для упорядочивания процесса разработки для групп, работа с которыми осуществляется из совместно используемого репозитория, что позволяет пользователям выполнять задачи управления версиями напрямую из системы проекта в среде IDE. ПО клиента CVS поставляется в комплекте с IDE NetBeans и при этом не требуется особая поддержка для начала работы с CVS.

В этом документе демонстрируется выполнение основных задач контроля версий в среде IDE путем рассмотрения стандартной последовательности действий при использовании программного обеспечения контроля версий.

CVS (Concurrent Versions System, система параллельных версий) — это система контроля версий с открытым исходным кодом, отслеживающая изменения в наборе файлов. Она обычно используется на этапе реализации проекта программного обеспечения, обеспечивая совместную работу группы разработчиков. Для получения подробной информации о CVS ознакомьтесь с link:http://ximbiot.com/cvs/[+официальной документацией+].

*Примечание.* После IDE NetBeans 7.0.1, поддержка CVS доступна после установки подключаемого модуля CVS из центра обновлений IDE NetBeans. Дополнительные сведения см. на странице link:http://wiki.netbeans.org/CVSSupport[+Часто задаваемые вопросы по CVS+].


image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 6.9 и более поздним версиям"]


*Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.*

|===
|Программное обеспечение или материал |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |версия 6.x и более поздние 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 6 и более поздние 
|===


== Синхронизация локальных файлов с репозиторием

При использовании системы контроля версий выполняется синхронизация локальных файлов с репозиторием, вносятся изменения в локальную копию, затем они фиксируются в репозитории. The following list describes various ways you can synchronize a project in the IDE NetBeans, depending on your specific situation:

* <<opening,Открытие проекта CVS в среде IDE>>
* <<checking,Взятие файлов для изменения из репозитория>>
* <<importing,Импорт файлов в репозиторий>>


=== Открытие проекта CVS в среде IDE

Если уже есть проект под контролем версий CVS, с которым работали вне среды IDE, его можно открыть в среде IDE, и все функции контроля версий станут доступными. Среда IDE проверяет открытые проекты и, если они содержат каталоги `CVS`, состояние файлов и контекстная поддержка автоматически активируются в проектах, созданных с использованием системы контроля версий CVS.


=== Получение файлов из репозитория

Если необходимо подключиться к удаленному репозиторию из среды IDE, получить файлы и начать работу с ними, выполните следующее.

1. В IDE NetBeans в главном меню выберите 'Группа' > 'CVS' > 'Извлечь'. Откроется мастер взятия для изменения. 

*Примечание. *Раскрывающееся меню IDE являются контекстно-зависимыми, т.е. доступные параметры зависят от текущего выбранного элемента. Поэтому, если вы уже работаете в проектом с использованием CVS, в главном меню можно выбрать "Контроль версий" > "Взятие для изменения".
2. На первой панели мастера введите местоположение репозитория, которое может быть определено переменной `CVSROOT`: 

 Среда IDE поддерживает несколько форматов `CVSROOT`, которые зависят от того, является ли репозиторий CVS локальным или удаленным, и от того, какой метод используется для подключения к нему. 

|===
|Метод |Описание |Пример 

|*pserver* |Удаленный сервер паролей |`:pserver:username@hostname:/repository_path` 

|*ext* |Доступ через протокол RSH или SSH |`:ext:username@hostname:/repository_path` 

|*local* |Доступ к локальному репозиторию |`:local:/repository_path` 
[float-right]# (требуется внешний исполняемый файл CVS)# 

|*fork* |Доступ к локальному репозиторию через удаленный протокол |`:fork:/repository_path` 
[float-right]# (требуется внешний исполняемый файл CVS)# 
|===

В зависимости от используемого метода для подключения к удаленному репозиторию может потребоваться ввод дополнительной информации: пароля или параметров прокси-сервера (например для метода подключения `pserver`). Нажмите кнопку "Далее". 

*Примечание.*При настройке аутентификации открытого ключа SSH см. в раздел link:http://wiki.netbeans.org/wiki/view/FaqHowToSetUpSSHAuth[+Настройка аутентификации открытого ключа SSH+]. 

Для получения дополнительной информации о доступе к локальным репозиториям см. страницу link:http://wiki.netbeans.org/wiki/view/FaqHowToAccessLocalCVS[+How can I access local repositories? (Как получить доступ к локальным репозиториям?)+]

[start=3]
1. На панели "Модули для взятия" мастера укажите модуль, который необходимо взять для изменения, в поле "Модуль". Если название модуля неизвестно, нажмите кнопку "Обзор" для просмотра содержимого репозитория. В появившемся диалоговом окне "Выбор модуля CVS" выберите модуль из списка и нажмите кнопку "ОК". Выбранный модуль будет добавлен в поле "Модуль".

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

[start=4]
1. В текстовом поле "Ветвь" введите имя ветви для получения. Можно также нажать кнопку "Обзор" для открытия диалогового окна "Выбор тега" и поиска доступных ветвей и тегов. Если ветвь или тег не будут указаны, будет выполнено получение _главной ветви_.
2. В поле "Локальная папка" введите местоположение на своем компьютере, в которое необходимо сохранить взятые файлы, затем нажмите кнопку "Готово", чтобы начать процесс взятия файлов для изменения в CVS. Среда IDE берёт указанные исходные файлы для изменения. Строка состояния среды IDE в правом нижнем углу показывает состояние загрузки файлов из репозитория в локальный каталог. Также можно просмотреть получаемые файлы в окне "Вывод" (Ctrl-4). 

*Примечание. *Если изъятые для использования источники содержат проекты NetBeans, отображается диалоговое окно с запросом на открытие их в IDE. Если в исходных файлах отсутствует проект, появится диалоговое окно с запросом на создание нового проекта из исходных файлов и их открытие в среде IDE. При создании нового проекта из существующих исходных файлов выберите соответствующую категорию проекта (в мастере создания проекта) и в этой категории выберите параметр "из существующих исходных файлов".


=== Импорт файлов в репозиторий

В качестве альтернативы можно импортировать проект, над которым велась работа в среде IDE, в удаленный репозиторий и продолжить работу над ним в среде IDE после того, как он будет поставлен под контроль версий системой CVS в репозитории.

*Примечание. *При непосредственном _экспорте_ файлов из используемой системы термин 'импорт' используется в системах управления версиями для указания того, что файлы _импортируются в_ репозиторий.

Чтобы импортировать проект в репозиторий, выполните следующее.

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 выгружает файлы проекта в репозиторий, а в открывшемся окне вывода отображается состояние импорта.

*Примечание. *Клиент CVS не обрабатывает импорт двоичных файлов по умолчанию. Самый оптимальный способ импортировать двоичные исходные файлы — создать файл `cvswrappers` внутри репозитория. Для получения подробной информации см. страницу link:http://wiki.netbeans.org/FaqCVSHowToImportBinaries[+How to Import Binary Files Correctly (Как правильно импортировать двоичные файлы?)+].


== Изменение файлов исходного кода

Если проект поставлен код контроль версий CVS и открыт в среде IDE, можно начинать вносить изменения в исходные файлы. Аналогично любому проекту, открытому в IDE NetBeans, можно открывать файлы в редакторе исходного кода двойным щелчком на их узлы при их отображении в окнах IDE (пример: проекты (Ctrl-1), файлы (Ctrl-2), Избранное (Ctrl-3)).

При работе с файлами исходного кода в среде IDE можно пользоваться различными компонентами пользовательского интерфейса, помогающими как в просмотре, так и в работе с командами контроля версий:

* <<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="цветовая кодировка управления версиями отображается на правой границе редактора"] 
*Правое поле* 
|===


=== Просмотр информации о состоянии файла

При работе в окнах Projects ("Проекты") (Ctrl-1), Files ("Файлы") (Ctrl-2), Favorites ("Избранное") (Ctrl-3) или Versioning ("Управление версиями") среда IDE предоставляет несколько визуальных функций, помогающих в просмотре информации о состоянии файлов. В примере, приведенном ниже, обратите внимание, как метка (например, image::images/blue-badge.png[])цвет имени файла и смежная метка состояния соответствуют друг другу для предоставления для пользователей простого и эффективного способа отслеживания данных об изменениях версий файлов:

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

Метки, условные цвета, ярлыки состояния файлов и, что, пожалуй, наиболее важно, окно контроля версий вместе дают дополнительные возможности по просмотру и управлению сведениями о версиях в среде IDE.

* <<badges,Метки и условные цвета>>
* <<fileStatus,Ярлыки состояния файлов>>
* <<versioning,Окно управления версиями>>


==== Метки и условные цвета

Метки относятся к узлам проектов, папок и пакетов. Они сообщают о состоянии файлов внутри соответствующего узла:

Ниже в таблице приведена цветовая схема, используемая для меток.

|===
|Элемент пользовательского интерфейса |Описание 

|*Синяя метка* (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. Выберите Tools ("Сервис") > Options ("Параметры") (NetBeans > Preferences ("Настройки") на Mac) из главного меню. Откроется окно "Options".
2. Выберите кнопку Miscellaneous ("Разное") наверху диалогового окна, затем щелкните вкладку Versioning ("Контроль версий") под ним. В списке систем контроля версий на панели должна быть выбрана система CVS:

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

[start=3]
1. Нажмите кнопку "Добавить переменную" справа от текстового поля "Формат ярлыка состояния". В открывшемся диалоговом окне" Добавление переменной" выберите переменную`{revision}` и нажмите "ОК". Переменная revision добавляется в текстовое поле "Формат ярлыка состояния".
2. Чтобы изменить формат ярлыка состояния так, чтобы справа от файлов отображались только состояние и номер редакции, измените порядок значений в текстовом поле "Формат ярлыка состояния" следующим образом:

[source,java]
----

[{status}; {revision}]
----
Нажмите кнопку "ОК". Ярлыки состояния теперь показывают состояние файла и номер редакции (где это применимо).

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. В следующей таблице перечислены команды, расположенные на панели инструментов окна "Контроль версий".

|===
|Значок |Имя |Функция 

|image::images/refresh.png[] |*Refresh Status ("Обновить состояние")* |Обновление состояния всех выбранных файлов и папок. Файлы, отображаемые в окне контроля версий, можно обновить для отражения любых изменений, внесенных извне. 

|image::images/diff.png[] |*Diff All ("Сравнить все")* |Открытие представления различий, предоставляющее параллельное сравнение локальных копий и версий в репозитории. 

|image::images/update.png[] |*Update All ("Обновить все")* |Обновление всех выбранных файлов в репозитории. 

|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 позволяет сравнивать редакции, используя команду Diff, доступную в контекстном меню выбранного элемента (CVS > Diff), а также в окне контроля версий. В окне 'Управление версиями', вы можете выполнить сравнение либо двойным щелчком указанного файла, либо щелкнув значок 'Сравнить все' (image::images/diff.png[]), расположенный на панели инструментов в верхней части.

При выполнении сравнения откроется средство просмотра различий для выбранного файла(-в) и редакций в главном окне IDE. В средстве просмотра различий отображаются две копии на параллельных панелях. Текущая копия отображается в правой части, поэтому при сравнении копии в репозитории с рабочей копией последняя отображается на правой панели:

[.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[] ): |Отображение локально и удаленно измененных файлов 
|===


=== Слияние редакций файлов

IDE NetBeans обеспечивает возможность слияния изменений между различными ветвями репозитория и локальной рабочей копии. В диалоговом окне слияния в системе 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. Когда новая функция будет готова, перейдите назад в главную ветвь. Для выполнения операции слияния между двумя ветвями необходимо, чтобы вы работали в целевой ветви (в данном случае, главной ветви). Щелкните узел проекта правой кнопкой мыши и выберите "CVS" > "Переключиться на ветвь". В открывшемся диалоговом окне выберите "Переключиться на главную ветвь" и нажмите кнопку "Переключить". 

Среда IDE переключит целевое местоположение в репозитории на главную ветвь. В окне 'Проекты' обратите внимание, что метки состояния автоматически обновляются для отражения нового рабочего местоположения.

[start=4]
1. Для выполнения слияния щелкните правой кнопкой мыши узел проекта и выберите CVS > 'Слияние изменений из ветви'. Обратите внимание, что в открывшемся диалоговом окне в поле "Слить изменения в текущую ветвь" выбрано значение `Главная ветвь`, указывающее на ваше текущее рабочее местоположение. 

В диалоговом окне укажите следующие критерии.
* Оставьте значение "Точка ветвления/корневая папка ветви" параметра "Начиная с", так как нам необходимо слить все изменения с момента создания ветви.
* Для параметра "До" выберите значение "Заголовок ветви" и введите имя ветви, которую нужно слить с главной ветвью. Можно также нажать кнопку "Обзор" и найти в репозитории существующую ветвь.
* Если необходимо пометить редакции, следующие за операцией слияния, выберите "Тег головной ветви после слияния" и введите необходимое имя тега.

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

Щелкните "Слить". Среда IDE вводит ветвь в главную ветвь. Если во время процесса слияния возникают конфликты, состояние проекта меняется на <<resolving,Конфликт слияния>>.

*Примечание. *После слияния изменений ветки с локальным рабочим каталогом, все равно необходимо зафиксировать изменения, используя команду Commit для того, чтобы они были добавлены в репозиторий.


== Фиксация исходных файлов в репозитории

После внесения изменений в исходные файла необходимо выполнить их фиксацию в репозитории. Как правило, рекомендуется обновить все копии в соответствии с репозиторием до выполнения фиксации, чтобы обеспечить отсутствие конфликтов. Однако конфликты все равно могут возникать и должны считаться обычным явлением при одновременной работе с проектом множества разработчиков. Среда IDE предоставляет гибкую поддержку, позволяющую выполнять все эти функции. Она также предоставляет компонент разрешения конфликтов, позволяющий корректно устранять конфликты при их возникновении.

* <<updating,Обновление локальных копий>>
* <<resolving,Разрешение конфликтов>>
* <<performing,Выполнение фиксации>>


=== Обновление локальных копий

Для внесения обновлений выберите CVS > 'Обновить' в контекстном меню любого элемента, для которого поддерживается управление версиями в окнах 'Проект', 'Файлы' или 'Избранное'. При работе напрямую из окна 'Управление версиями' нужно просто щелкнуть правой кнопкой мыши указанный файл и выбрать 'Обновить'.

Чтобы выполнить обновление на измененных источниках, можно нажать кнопку 'Обновить все' (image::images/update.png[]), которая отображается в панели инструментов, расположенной в верхней части и <<versioning,Окно управления версиями>>, и <<comparing,Средство просмотра различий>>. Все изменения, которые могли быть внесены в репозитории, отображаются в окне "Вывод версий".


=== Разрешение конфликтов

При выполнении операции обновления или фиксации система CVS в среде IDE сравнивает ваши файлы с исходными файлами в репозитории и проверяет, не произошли ли другие изменения в тех же местоположениях. В случае если взятые для изменения (или обновленные) файлы не совпадают с версией _HEAD_ репозитория ( то есть наиболее актуальной версией), _и_ изменения, внесенные в локальную рабочую копию соответствуют областям в ветки HEAD, которые также были изменены, возникает _конфликт_ обновления или фиксации.

Как указано в <<badges,Метки и цветовая схема>>, конфликты выделяются в среде IDE красным текстом и рядом с ними отображается красный значок (image::images/red-badge.png[]) при просмотре в окнах 'Проекты', 'Файлы', или 'Избранное'. В окне "Контроль версий" конфликты отмечены состоянием файлов.

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

Любой возникший конфликт необходимо разрешить, прежде чем выполнять фиксацию в репозиторий. В среде IDE конфликты можно разрешить с помощью средства разрешения конфликтов слияния. Средство разрешения конфликтов слияния предлагает интуитивно понятный интерфейс, помогающий последовательно разрешать отдельные конфликты во время просмотра результатов слияния. Доступ к средству разрешения конфликтов слияния в конфликтующем файле щелкните правой кнопкой мыши этот фал и выберите CVS > 'Разрешить конфликты'.

Средство разрешения конфликтов слияния отображает две конфликтующие копии рядом на верхней панели, выделяя при этом конфликтующие области. На нижней панели изображен файл так, как он отображается во время слияния для отдельных конфликтов между двумя редакциями:

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

Для разрешения конфликта примите одну из двух редакций, которые отображаются на верхней панели. В редакции, которую необходимо принять нажмите кнопку "Принять". Среда IDE сливает принятую редакцию с исходным файлом, и результаты слияния мгновенно отображаются на нижней панели разрешителя конфликтов слияния. Когда все конфликты будут разрешены, нажмите "ОК" для выхода из средства разрешения конфликтов слияния и сохранения измененного файла. Метка конфликта будет удалена, и файл можно будет фиксировать в репозитории.


=== Выполнение фиксации

После редактирования исходных файлов, выполнения обновления и устранения конфликтов выполняется фиксация файлов из локальной рабочей копии в репозиторий. Среда 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[+Отправить отзыв по этому учебному курсу+]



== Дополнительные сведения

На этом завершается обзор возможностей CVS для IDE NetBeans. В данном документе показано, как решать основные задачи контроля версий в среде IDE, путем демонстрации стандартной рабочей последовательности действий при использования поддержки CVS в среде IDE. Мы продемонстрировали процесс постановки проекта под контроль версий и выполнение основных задач с файлами, стоящими под контролем версий, а также познакомили вас с новыми функциями системы CVS в среде IDE.

Материалы на связанные темы:

* link:http://wiki.netbeans.org/NetBeansUserFAQ#CVS[+Часто задаваемые вопросы по поддержке CVS для IDE NetBeans+]. Документ, содержащий часто задаваемые вопросы, связанные с настройкой и использованием CVS в IDE NetBeans.
* link:git.html[+Использование поддержки Git в IDE NetBeans+]. Вводное руководство по использованию клиента управления версиями Git в IDE NetBeans.
* link:mercurial.html[+Использование поддержки Mercurial в IDE NetBeans+]. Руководство по использованию клиента управления версиями Mercurial в IDE NetBeans.
* link:subversion.html[+Использование поддержки Subversion в IDE NetBeans+]. Вводное руководство по использованию управления версиями Subversion в IDE NetBeans 6.x..
* link:clearcase.html[+Использование поддержки ClearCase в IDE NetBeans+]. Вводное руководство по использованию функций системы ClearCase в среде IDE.
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+Управление версиями приложений с помощью системы контроля версий+] в _Разработка приложений с помощью IDE NetBeans_.
