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

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

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

link:http://www.selenic.com/mercurial/wiki/[+Mercurial+] — это быстрая и простая система управления исходным кодом, предназначенная для эффективной работы с очень большими распределенными проектами. В отличие от CVS и Subversion, Mercurial работает с распределенными репозиториями, которые широко используются во множестве проектов с открытым исходным кодом, и поддерживает распределенную разработку без централизованного контроля. Команды Mercurial можно использовать как для файлов, так и для каталогов. Среда IDE предоставляет средство просмотра различий, позволяющее сравнивать версии файлов и поддерживающее встроенные различия непосредственно в редакторе.

Поддержка Mercurial в среде IDE схожа с поддержкой Subversion в среде IDE. Основное различие в том, что Mercurial — это распределенная система контроля версий. Обычно пользователи начинают с _клонирования_ внешнего репозитория для работы. Этот клон — полная копия репозитория, включая журнал редакций. Можно клонировать локальную копию так часто, как это необходимо, и по готовности выгрузить локально внесенные изменения обратно в репозиторий, если имеются разрешения, или _экспортировать_ изменения и отправлять их владельцу репозитория, если у вас отсутствуют разрешения.



== Требования

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

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

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Версия 8.0 

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

|link:http://www.selenic.com/mercurial/[+Клиентское программное обеспечение Mercurial+] |1.04 или более новая 
|===


== Настройка Mercurial

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

Можно загрузить Mercurial как исходные файлы или двоичный пакет с link:http://www.selenic.com/mercurial/[+ веб-сайта Mercurial+].

Чтобы установить путь к исполняемому файлу Mercurial в среде IDE, выполните следующее:

1. Выберите  ``Сервис``  >  ``Параметры``  ( ``NetBeans``  >  ``Предпочтения``  в OS X) в главном меню. Откроется диалоговое окно Options ("Параметры").
2. Выберите значок "Группа" в верхней части диалогового окна, затем щелкните вкладку "Управление версиями". На левой панели в разделе "Система управления версиями" выберите "Mercurial". Параметры пользователя Mercurial отображаются в главном окне диалога:

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


. В текстовом поле "Путь к исполняемому файлу Mercurial" введите путь к исполняемому файлу или щелкните "Обзор", чтобы выбрать его в системе. Обратите внимание, что исполняемый файл Mercurial не _включен_ в путь.
. Нажмите кнопку "ОК".

После настройки клиента Mercurial команды Mercurial можно выполнить из меню  ``Группа``  >  ``Mercurial``  среды IDE. Чтобы клонировать внешний репозиторий Mercurial, выберите  ``Группа``  >  ``Mercurial``  >  ``Clone Other``  (Клонировать другое). В процессе клонирования среда IDE автоматически импортирует информацию о состоянии в клонированные файлы.

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

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


[source,bash]
----
hg clone /path/to/your/repository
----

NOTE:  Репозитории NetBeans Mercurial (link:http://hg.netbeans.org/[+http://hg.netbeans.org/+]) в этом учебном руководстве используются для демонстрационных целей.


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

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

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


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

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


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

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

1. В главном меню IDE NetBeans выберите  ``Группа``  >  ``Mercurial``  >  ``Клонировать другое`` . Откроется мастер клонирования.

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

NOTE:  Раскрывающееся меню IDE являются контекстно-зависимыми, т.е. доступные параметры зависят от текущего выбранного элемента. Поэтому, если вы уже работаете с проектом Mercurial, можно выбрать  ``Контроль версий``  >  ``Регистрация``  >  ``Клонировать другое``  в главном меню.


. В поле "URL-адрес репозитория" введите путь к репозиторию (например,  ``http://hg.netbeans.org/main`` ).
. В полях "Пользователь" и "Пароль" мастера клонирования введите имя пользователя и пароль netbeans.org.

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


. Если используется прокси, необходимо нажать кнопку "Настройка прокси" и ввести всю необходимую информацию в диалоговом окне "Параметры". Если вы не уверены в правильности параметров подключения к репозиторию, нажмите кнопку "Далее".
. Во втором действии щелкните "Изменить" справа от поля "Default Push Path" (Путь выгрузки изменений по умолчанию) . Откроется диалоговое окно "Изменить путь выгрузки изменений".

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


. Изменить элемент выгрузки изменений по умолчанию, добавив имя пользователя и пароль NetBeans и выбрав протокол  ``https`` .
. Щелкните "Установить путь". Диалоговое окно "Изменить путь выгрузки изменений" закроется.
. Щелкните "Далее", чтобы перейти к третьему шагу мастера.
. В поле "Родительский каталог" введите местоположение на компьютере для получения файлов репозитория (или можно использовать кнопку "Обзор").

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

NOTE:  При работе в Windows, обращайте особое внимание на указываемую длину, т.е. такой путь как  ``C:\Documents and Settings\myName\My Documents\NetBeans\etc\etc``  может привести к ошибке клонирования из-за очень длинных путей к файлам. Вместо этого попробуйте использовать  ``C:\`` .


. Оставьте установленным флажок "Поиск проектов Netbeans после выгрузки", затем нажмите "Готово", чтобы инициировать действие взятия. 
Среда IDE берёт указанные исходные коды для изменения, а в строке состояния IDE отображается ход выполнения загрузки файлов из репозитория в локальный рабочий каталог. Также можно просмотреть файлы и их изъятие в окне 'Выходные данные' (Ctrl-4 в Windows/Command-4 в OS X).

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


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

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

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

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

1. В окне "Проекты" (Ctrl-1 в Windows/Command-1 в OS X) выберите проект, не находящийся под контролем версий, затем выберите ``Группа``  >  ``Mercurial``  >  ``Инициализировать репозиторий``  в контекстном меню узла. Откроется диалоговое окно "Корневой путь репозитория".

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


. Укажите папку репозитория, в которую необходимо разместить проект в репозитории. По умолчанию в текстовом поле "Корневой путь" предлагается папка, содержащая имя проекта.
. Нажмите "ОК", чтобы инициировать действие инициализации Mercurial.
При нажатии кнопки ОК среда IDE загружает файлы проекта в репозиторий.
Выберите 'Окно' > 'Вывод', чтобы открыть окно 'Вывод' для просмотра хода выполнения.

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

NOTE:  После включения для файлов проекта поддержки управления версиями 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"]
--


. Введите сообщение в текстовую область "Сообщение о фиксации" и щелкните "Фиксация".

NOTE:  Фиксированные файлы помещаются вместе с каталогом  ``.hg``  в каталог репозитория Mercurial. Сведения о фиксации можно получить в окне IDE 'Выходные данные' (Ctrl-4 в Windows/Command-4 в OS X).


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

После открытия проекта Mercurial с контролем версий в среде IDE можно начать внесение изменений в исходные файлы. Как и в любом проекте, открытом в IDE NetBeans, можно открывать файлы в редакторе исходного кода двойным щелчком на соответствующих узлах по мере их отображения в IDE (например, в окнах 'Проекты' (Ctrl-1 в Windows/Cmd-1 в OS X ), 'Файлы'(Ctrl-2 в Windows/Cmd-2 в OS X), 'Избранное' (Ctrl-3 в Windows/Cmd-3 в OS X)).

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

* <<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"]
--
 
=== Просмотр информации о состоянии файла

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

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

NOTE:  Метки состояния являются текстовыми индикаторами окон 'Управление версиями', 'Проекты' и 'Файлы'. Для отображения метки состояния выберите 'Вид'> 'Показывать метки управления версиями' на главной панели инструментов.

Метки, условные цвета, ярлыки состояния файлов и, что, пожалуй, наиболее важно, окно контроля версий вместе дают дополнительные возможности по просмотру и управлению сведениями о версиях в среде 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[] |Указывает, что файл игнорируется Mercurial и не будет включен в команды контроля версий (например, "Обновить" и "Фиксация"). Файлы можно сделать игнорируемыми, только если они еще не добавлены под контроль версий. 

|*Перечеркивание* |image:images/strike-through-text.png[] |Указывает на то, что файл исключен из операций фиксации. Перечеркнутый текст отображается только в некоторых местах, например, окно "Контроль версий" или диалоговое окно "Фиксация", при исключении отдельных файлов из действия фиксации. На такие файлы по-прежнему влияют другие команды Mercurial, например, "Обновить". 
|===


==== Ярлыки состояния файлов

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

1. Выберите  ``Сервис``  >  ``Параметры``  ( ``NetBeans``  >  ``Предпочтения``  в OS X) в главном меню. Откроется окно "Options".
2. Выберите кнопку "Группа" в верхней части диалогового окна, затем щелкните вкладку "Управление версиями" ниже. Убедитесь, что ниже "Системы управления версиями" на левой панели выбрано Mercurial.
3. Чтобы переформатировать ярлыки состояния, чтобы справа от файлов отображались только состояние и папки, установите следующий порядок содержимого текстового поля "Формат ярлыка состояния":

[source,java]
----

[{status}; {folder}]
----
Нажмите кнопку "ОК". Теперь в ярлыках состояния указаны состояние файла и папка (если применимо):

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

Можно включить или отключить отображение ярлыков состояний файлов, выбрав  ``Вид``  >  ``Показать ярлыки контроля версий``  в главном меню.


==== Окно контроля версий

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

Чтобы открыть окно "Контроль версий", выберите файл или папку, находящиеся под контролем версий (например в окне "Проекты","Файлы" или "Избранное"). Затем выберите  ``Mercurial``  >  ``Показать изменения``  в контекстном меню либо  ``Группа``  >  ``Mercurial``  >  ``Показать изменения``  в главном меню. В нижней панели среды IDE откроется следующее окно:

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

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

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

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

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

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

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

|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. В средстве просмотра различий отображаются две копии на параллельных панелях. Текущая копия отображается в правой части, поэтому при сравнении копии в репозитории с рабочей копией последняя отображается на правой панели:

[.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[]): |переход к следующему различию, отображенному в сравнении. 
|===


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

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

1. В окне "Проекты", "Файлы" или "Избранное" щелкните правой кнопкой мыши файлы или папки, для которых необходимо выполнить операцию слияния, и выберите  ``Mercurial``  >  ``Ветвь/Метка``  >  ``Объединить изменения`` . Появится диалоговое окно "Объединить с редакцией".
2. Выберите редакцию в раскрывающемся списке "Выберите из редакций". Выполняется перенос всех изменений, выполненных в локальной рабочей копии, со момента ее создания.
3. Убедитесь. что данные для 'Описание', 'Автор' и 'Дата' указаны правильно.

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


. Щелкните "Слить". Среда IDE объединяет все найденные различия между редакциями репозитория и локальной копией файла. При возникновении конфликтов слияния устанавливается состояние файла <<resolving,Конфликт слияния>> для указания на это.

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


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

После внесения изменений в исходные файла необходимо выполнить их фиксацию в репозитории. Как правило, рекомендуется обновить все копии в соответствии с репозиторием до выполнения фиксации, чтобы обеспечить отсутствие конфликтов. Однако конфликты все равно могут возникать и должны считаться обычным явлением при одновременной работе с проектом множества разработчиков. Среда 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. Если средство отслеживания ошибок репозитория не зарегистрировано, нажмите кнопку "Новое", чтобы зарегистрировать ее.
* *Проблема:* укажите идентификатор проблемы. Для этого необходимо ввести идентификатор или часть описания.

Также можно указать следующие параметры:

* *Разрешить как подтвержденное (FIXED):* при выборе состояние проблемы отмечено как разрешенное.
* *Добавить сообщение о фиксации из имеющихся:* при выборе к проблеме добавляется сообщение о фиксации.
* *Add Revision Information to the Issue (Добавить информацию о редакции к проблеме):* при выборе проблема обновляется для включения информации о редакции, такой как автор, дата и т.д. Можно щелкнуть "Change Format" (Изменить формат), чтобы изменить формат информации о редакции, добавленной к проблеме.
* *Add Issue Information to Commit Message (Добавить информацию о проблеме к сообщению о фиксации):* при выборе к сообщению о фиксации добавляется идентификатор проблемы и сводка. Можно щелкнуть "Change Format" (Изменить формат), чтобы изменить формат информации о проблеме, добавленной к сообщению.
* *После фиксации:* При выборе этого параметра, ошибка обновляется после фиксации изменений.
* *После выгрузки изменений:* при выборе ошибка обновляется после выгрузки изменений в репозиторий.


=== Выгрузка локальных изменений в общий репозиторий

Перед выгрузкой локально зафиксированных изменений в общий репозиторий необходимо синхронизировать локальный и общий репозитории. Чтобы выполнить это действие с помощью команды "Получить изменения", выберите  ``Группа``  > ( ``Mercurial``  >)  ``Удаленный``  >  ``Получить изменения``  в главном меню. После успешного выбора локальный и общий репозиторий синхронизируются.

Чтобы отправить изменения, выберите  ``Группа``  > ( ``Mercurial``  >)  ``Удаленный``  >  ``Отправить текущую ветвь`` ,  ``Группа``  > ( ``Mercurial``  >)  ``Удаленный``  >  ``Отправить все ветви``  или  ``Группа``  > ( ``Mercurial``  >)  ``Ужаденный``  >  ``Отправить изменения``  в главном меню. В выводе успешной выгрузки изменений будут перечислены все созданные наборы изменений.

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


== Заключение

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

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Mercurial%20Support%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]



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

Связанные материалы можно найти в следующих документах:

* link:http://wiki.netbeans.org/HgNetBeansSources[+Использование Mercurial для работы с исходными файлами NetBeans в среде IDE+]
* link:mercurial-queues.html[+Использование поддержки Mercurial Queues в IDE NetBeans+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+Управление версиями приложений с помощью системы контроля версий+] в документе _Разработка приложений в IDE NetBeans_
