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

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

IDE NetBeans обеспечивает соответствующий уровень интеграции с клиентами Subversion версий 1.6.x и более поздними версиями. Поддержка Subversion в IDE предназначена для упрощения процесса разработки у групп, работающих с общим репозиторием, и позволяет выполнять задачи контроля версий прямо с системы проекта из среды IDE.

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

Заметим, что поддержка Subversion в NetBeans _не_ работает при использовании из Cygwin.

link:http://subversion.tigris.org/[+Subversion +] — это популярная система контроля версий с открытым кодом, которая стала заменой CVS из следующего поколения программ. Она обладает улучшенными возможностями, например:

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


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


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

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

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |версия 6.9, 7.0, 7.1, 7.2, 7.3, 7.4 или 8.0 

|link:http://java.sun.com/javase/downloads/index.jsp[+Комплект для разработчика на языке Java (JDK)+] |версия 6, 7 или 8 

|link:http://www.open.collab.net/downloads/netbeans/[+Клиентское программное обеспечение Subversion+] |1.6.x или более поздняя 
|===

NOTE: Входящий в комплект клиент Subversion можно установить как подключаемый модуль IDE NetBeans. Выберите 'Сервис' > 'Подключаемые модули', откройте вкладку 'Доступные подключаемые модули' и установите Bundled Subversion Client для Windows.


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

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

* <<getting,Получение программного обеспечения>>
* <<specifying,Указание пути к исполнимому файлу Subversion>>
* <<ensuring,Проверка наличия репозитория для подключения>>


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

Необходимо убедиться, что на компьютере установлено следующее программное обеспечение:

* IDE NetBeans (link:https://netbeans.org/downloads/index.html[+загрузка+])
* Java SE Development Kit (link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+загрузить+])
* Клиентское программное обеспечение Subversion (link:http://www.open.collab.net/downloads/netbeans/[+загрузить+])


=== Укажите путь к исполнимому файлу Subversion.

IDE NetBeans автоматически выполняет попытку определить местоположение исполняемого файла Subversion с помощью системной переменной `$PATH` на компьютере пользователя. Однако, в зависимости от платформы и пути установки клиентского ПО Subversion, отличающегося от пути по умолчанию, может понадобиться указать путь к исполнимому файлу Subversion явным образом.

По умолчанию исполняемый файл Subversion установлен в папке `/usr/bin` или `/usr/local/bin/` на UNIX и OS X компьютера, а также в папке `C:\Program Files\Subversion\bin\` (или `C:\Program Files\CollabNet Subversion\bin\`) в Windows.

На компьютерах под управлением *nix местоположение исполнимого файла Subversion можно определить, введя строку `which svn` в окно терминала. На компьютерах под управлением Windows можно запустить поиск файла `svn.exe` по всей системе.

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

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

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


[start=3]
. В текстовом поле Specify the SVN Home Folder ("Указать домашний каталог SVN") следует либо ввести путь к исполнимому файлу, либо нажать кнопку "Обзор" и найти этот путь в системе. Заметим, что нет нужды _включать_ в строку пути исполнимый файл Subversion.

[start=4]
. Нажмите кнопку "ОК" и перезапустите среду IDE, чтобы изменения вступили в силу.


=== Проверка наличия репозитория для подключения

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

Чтобы поэкспериментировать с поддержкой IDE, используя локальный репозиторий, можно его создать, используя средство link:http://svnbook.red-bean.com/en/1.1/ch09s02.html[+svnadmin+], которое включено в клиентское программное обеспечение Subversion.

Чтобы создать репозиторий Subversion, используется команда `svnadmin create`. В командной строке введите следующее:


[source,java]
----

svnadmin create /path/to/your/repository
----

Дополнительную информацию можно получить в главе link:http://svnbook.red-bean.com/en/1.1/ch05s02.html[+http://svnbook.red-bean.com/en/1.1/ch05s02.html+].

<<top,В начало>>


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

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

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


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

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


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

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

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

NOTE: Раскрывающееся меню IDE являются контекстно-зависимыми, то есть доступные параметры зависят от текущего выбранного элемента. Таким образом, во время работы с проектом в Subversion можно выбрать элемент Versioning ("Контроль версий") > Checkout ("Извлечь") в главном меню.

[start=2]
. На первой панели мастера введите URL-адрес, который содержит протокол подключения и путь к репозиторию, к которому необходимо подключиться. 

В среде IDE поддерживаются следующие типы протоколов: 

|===
|Протокол |Метод доступа |Пример 

|*файл* |Прямой доступ к репозиторию (на локальном диске) |`file:///путь_к_репозиторию` 

|*http* |Доступ к серверу с поддержкой Subversion через протокол WebDAV. |`http://имя_узла/путь_к_репозиторию` 

|*https* |Доступ через протокол HTTP с поддержкой шифрования SSL |`https://имя_узла/путь_к_репозиторию` 

|*svn* |Доступ через особый протокол к серверу `svnserve`. |`svn://имя_узла/путь_к_репозиторию` 

|*svn+ssh* |Доступ через протокол SVN с использованием внешнего туннеля SSH |`svn+ssh://имя_узла/путь_к_репозиторию` 
|===

В зависимости от используемого протокола может понадобиться ввести информацию, как, например, имя пользователя или пароль (для `http://`, `https://` или `svn://`), а в случае `svn+ssh://` необходимо указать команду для установления внешнего туннеля. 

NOTE: Если выполняется попытка реализации сертифицированной аутентификации с помощью `https`, см: раздел link:http://wiki.netbeans.org/wiki/view/FaqSslUserCert[+Подключение к репозиторию Subversion с помощью аутентификации, сертифицированной пользователем+] 

Дополнительные сведения с `svn+ssh` см. в разделе link:http://wiki.netbeans.org/wiki/view/FaqSubversionSSH[+Настройка SSH с использованием Subversion?+]


. При использовании прокси необходимо нажать кнопку Proxy Configuration ("Настройка прокси-сервера") и ввести всю необходимую информацию. Если вы не уверены в правильности параметров подключения к репозиторию, нажмите кнопку "Далее".
. В поле Repository Folder(s) ("Каталог (-и) репозитория") панели Folders to Checkout ("Каталоги для извлечения") мастера настройте каталог, который необходимо взять для изменения. Если имя каталога, который необходимо взять для изменения, неизвестно, нажмите кнопку Browse ("Обзор"), чтобы просмотреть каталоги, которые хранятся в репозитории. В диалоговом окне Browse Repository Folders ("Обзор каталогов репозитория") выберите любой из перечисленных каталогов и нажмите кнопку "ОК". Выбранный каталог потом добавляется в поле Repository Folder(s) ('Каталог (-и) репозитория') (каталог 'MyProject&amp;' на снимке экрана ниже).

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


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

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


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

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

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

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

1. В окне 'Проекты' (Ctrl-1 в Windows/Cmd-1 в OS X) выберите проект, для которого не осуществляется управление версиями, и выберите 'Управление версиями' > 'Импорт в репозиторий Subversion' в меню правой кнопки мыши этого узла. Открывается мастер импорта в Subversion.
2. В панели "Репозиторий Subversion" мастера импорта укажите <<protocolTypes,протокол>> и путь к репозиторию Subversion, как определено в URL-адресе Subversion. В зависимости от сделанного выбора может понадобиться указать такие параметры, как имя пользователя и пароль для репозитория, или, в случае `svn+ssh://`, команду для установления внешнего туннеля. Дополнительные сведения см. в разделе link:http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-VersionControlSystems[+Часто задаваемые вопросы пользователей по Subversion+]. Нажмите кнопку "Далее".
3. В панели "Каталог репозитория" укажите каталог репозитория, в котором будет находиться проект. По умолчанию в текстовом поле "Каталог репозитория" предлагается каталог с названием, совпадающим с названием проекта.
4. В текстовом поле под заголовком "Укажите сообщение" введите описание проекта, который импортируется в репозиторий.
5. Нажмите кнопку "Завершить" для запуска импорта или кнопку "Далее" для перехода на третью панель, которая позволяет просматривать все файлы, приготовленные для импорта. В этой панели можно исключить из импорта отдельные файлы (как показано ниже) или определить типы MIME файлов перед импортом.

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

После нажатия кнопки "Завершить" среда IDE выгружает в репозиторий файлы проекта, и открывается окно вывода, в котором отображается ход импорта.

<<top,В начало>>


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

Если версия проекта Subversion открыта в среде 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"]
--
 
*Левое поле* |image:images/right-ui.png[title="цветовая кодировка управления версиями отображается на правой границе редактора"] 
*Правое поле* 
|===


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

При работе в окнах "Проекты" (CTRL+1 в системе Windows/CMD+1 в системе OS X), "Файлы" (CTRL+2 в системе Windows/CMD+2 в системе OS X), "Избранное" (CTRL+3 в системе Windows/CMD+3 в системе OS X) или окнах управления версиями некоторые функции отображения среды 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[] |Указывает но то, что файл пропущен системой Subversion и не будет обработан командами контроля версий (такими как "Update" (Обновить) и "Commit" (Зафиксировать)). Файлы можно сделать игнорируемыми, только если они еще не добавлены под контроль версий. 

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


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

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

1. Выберите 'Сервис' > 'Параметры' ('NetBeans'> 'Предпочтения' на OS X) в главном меню. Откроется окно "Options".
2. Выберите кнопку Miscellaneous ("Разное") наверху диалогового окна, затем щелкните вкладку Versioning ("Контроль версий") под ним. Убедитесь, что в левой панели под системами управления версиями выбрана система Subversion. (Для справки см. <<svnOptions,снимок экрана>> выше).
3. Нажмите кнопку Add Variable ("Добавить переменную") справа от текстового поля строки состояния Format ("Формат"). В открывшемся диалоговом окне" Добавление переменной" выберите переменную`{revision}` и нажмите "ОК". Переменная revision добавляется в текстовое поле "Формат ярлыка состояния".
4. Переформатировать метки состояний так, чтобы справа от файлов отображались только их состояние и редакция, можно, изменив порядок следования содержимое текстового поля "Формат меток состояний" на следующий:

[source,java]
----

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

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


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

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


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

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

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

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

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

*Примечания*

* Для получения уведомления об изменении исходного файла в одном из открытых проектов выберите 'Группа' > 'Показать изменения' в главном меню. Либо если открыто окно 'Управление версиями', можно нажать кнопку 'Обновить состояние'.
* Операции в окне 'Проекты' выполняются только над проектами и не являются рекурсивными. Для отображения изменений вложенных/дочерних проектов можно использовать окно 'Файлы' или 'Избранное'.

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

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

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

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

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

|image:images/commit.png[] |*Фиксировать все* |Позволяет фиксировать локальные изменения в репозитории. 
|===

Для доступа к другим командам Subversion в окне контроля версий необходимо выбрать строку таблицы, соответствующую измененному файлу, а затем выбрать команду в контекстом меню:

image::images/versioning-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/revert-mods-small.png[role="left", link="images/revert-mods.png"]
--
 

|* *Откатить изменения*: 

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

При указании редакций можно нажать кнопку "Поиск", чтобы открыть диалоговое окно "Поиск редакции". Произойдет поиск по репозиторию и вывод редакций в зависимости от введенной даты.
 |[.feature]
--
image::images/search-rev-small.png[role="left", link="images/search-rev.png"]
--
 
|===


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

Сравнение редакций файлов — это распространенная задача при работу с проектами с контролем версий. Среда IDE позволяет сравнивать редакции, используя команду Diff, доступную в контекстном меню выбранного элемента (Subversion > 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[] ): |Отображение локально и удаленно измененных файлов 
|===

NOTE:  Цветовая схема, описанная в разделе <<badges, Метки и условные цвета>> не применяется для приведенных выше значков.


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

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

Обычно используется следующая схема работы: имеется взятая из головной ветви версия, сохраненная в папке под именем `JavaApp`, и требуется произвести слияние этой копии с ветвью. В целях демонстрации репозиторий содержит каталог `branches`, в котором находятся все ответвленные файлы:

1. В окне 'Проекты', 'Файлы' или 'Избранное' правой кнопкой мыши щелкните файлы или папки, для которых необходимо выполнить операцию слияния, и выберите 'Subversion' > 'Объединить изменения'. Появляется диалоговое окно Merge ("Слияние").
2. В раскрывающемся списке Merge From ("Слить из") выберите One Repository Folder Since Its Origin ("Одна папка репозитория после создания"). Переносятся все изменения, которые были сделаны в отдельном файле после его создания.
3. В текстовом поле папки репозитория введите путь к папке, из которой необходимо перенести изменения (`branches/JavaApp`). Оставьте поле "Конечная редакция" пустым, чтобы включить все редакции от первой до _HEAD_ (то есть текущего состояния).

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


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

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

<<top,В начало>>


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

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

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


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

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

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


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

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

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

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

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

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

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

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


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

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

* В окне 'Проекты', 'Файлы' или 'Избранное' правой кнопкой мыши щелкните новые или измененные элементы и выберите 'Subversion' > 'Фиксация'.
* В окне 'Управление версиями' или 'Средства просмотра различий' нажмите кнопку 'Фиксировать все' (image:images/commit.png[]) на панели инструментов.

Откроется диалоговое окно "Фиксация", в котором отображаются файлы для фиксации в репозитории:

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

В диалоговом окне "Фиксация" перечислено следующее:

* все локально измененные файлы;
* все файлы, которые были локально удалены;
* все новые файлы (то есть, файлы, которых пока нет в репозитории);
* все файлы, которые были переименованы. Для хранения переименованных файлов в Subversion удаляются исходные файлы и создаются дубликаты с новым именем.

В диалоговом окне "Фиксация" можно указать исключение отдельных файлов из фиксации. Для этого щелкните столбец "Действие фиксации" для выбранного файла и выберите пункт "Исключить из фиксации" в раскрывающемся списке. Аналогично, при включении новых файлов можно указать тип MIME, выбрав "Добавить как исходный файл" или "Добавить как текст" в раскрывающемся списке.

Для фиксации выполните следующее.

1. Введите сообщение о фиксации в текстовой области "Сообщение о фиксации". В качестве альтернативы щелкните значок 'Последние сообщения' ( image:images/recent-msgs.png[] ), расположенный в правом верхнем углу, чтобы просмотреть и выбрать необходимое из ранее использованного списка сообщений.
2. После указания действий для отдельных файлов щелкните "Фиксация". Среда IDE выполнит фиксацию и отправит локальные изменения в репозиторий. В строке состояния IDE, расположенной в правой нижней части интерфейса, отображается выполнение действия фиксации. При успешной фиксации метки контроля версий перестают отображаться в окнах "Проекты", "Файлы" и "Избранное", а для цветового обозначения фиксированных файлов используется черный цвет.

<<top,В начало>>


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

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

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


<<top,В начало>>


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

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

* link:http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-VersionControlSystems[+Часто задаваемые вопросы по поддержке Subversion для IDE NetBeans+]
* link:http://wiki.netbeans.org/FaqSubversionClients[+Часто задаваемые вопросы о клиентах Subversion+]
* link:git.html[+Использование поддержки Git в IDE NetBeans+]
* link:mercurial.html[+Использование поддержки Mercurial в IDE NetBeans+]
* link:mercurial-queues.html[+Использование поддержки Mercurial Queues в IDE NetBeans+]
* link:cvs.html[+Использование поддержки CVS в IDE NetBeans+]
* link:clearcase.html[+Использование поддержки ClearCase в IDE NetBeans+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+Управление версиями приложений с помощью системы контроля версий+] в _Разработка приложений с помощью IDE NetBeans_.

<<top,В начало>>

