Фиксация ваших изменений в хранилище

Отправка изменений, сделанных в вашей рабочей копии, называется фиксацией. Но перед фиксацией вы должны убедиться, что рабочая копия находится в актуальном состоянии. Можно либо сразу использовать TortoiseSVNSVN Обновить..., либо можно сначала вызвать TortoiseSVNПроверить на наличие изменений для просмотра файлов, которые были изменены локально или на сервере.

Диалог фиксации

Если ваша рабочая копия в актуальном состоянии, и конфликты отсутствуют, то вы готовы к фиксации ваших изменений. Выберите любой файл и/или папку, которые вы хотите зафиксировать, и вызовите TortoiseSVNSVN SVN Фиксировать....

Рисунок 4.8. Диалог фиксации

Диалог фиксации


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

Чтобы быстро отметить или снять пометку с типов файлов, таких как, все версированные файлы или все изменённые файлы, кликните на ссылки над списком отображаемых элементов.

Для информации о расцветке и оверлейных значках соответствующих статусу обратитесь к «Локальный и удалённый статус».

Элементы, переключенные на другие пути в хранилище, отмечаются маркером (s). Возможно, вы переключили что-то, пока работали в ответвлении, и забыли переключить обратно в основной ствол. Этот маркер - предупредительный сигнал!

Что фиксировать: файлы или папки?

Когда вы фиксируете файлы, диалог фиксации отображает только выбранные вами файлы. Когда вы фиксируете папки, диалог фиксации самостоятельно отберёт изменённые файлы. Если вы забудете о созданном вами новом файле, при фиксации папки он всё равно будет обнаружен. Фиксация папки не означает, что каждый файл будет помечен как изменённый, это просто способ облегчить вам жизнь путём выполнения в помощь вам большего объёма работы.

Большое количество неверсированных файлов в диалоге фиксации

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

  • добавить файл (или шаблон его имени) в список игнорируемых файлов на странице настроек. Это затронет все ваши рабочие копии.

  • добавить файл в список svn:ignore, используя TortoiseSVNДобавить в список игнорирования. Это затронет только папку, для которой вы устанавливаете свойство svn:ignore. Вы можете изменить свойство svn:ignore для папки при помощи диалога свойств Subversion.

  • добавить файл в список svn:global-ignores, используя TortoiseSVNДобавить в список игнорирования (рекурсивно). Это затронет папку, для которой вы устанавливаете свойство svn:global-ignores, и также все подпапки.

Для дополнительной информации прочтите «Игнорирование файлов и папок».

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

Вы можете отмечать или разотмечать элементы при помощи щелчка на флажке, находящегося слева от этого элемента. Для папок возможно использование Shift-отметки для того, чтобы применить действие рекурсивно.

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

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

Предупреждение при фиксации в ветку tags

Обычно фиксации делаются в ветки trunk или branch, но не в tags. Всё же, ветка tag считается неизменной и не должна изменяться.

При попытке фиксации в URL ветки tag TortoiseSVN показывает диалог с подтверждением, чтобы удостовериться действительно ли это то, что надо. Потому что в большинстве случаев такие фиксации делаются случайно.

Однако, эта проверка работает только если схема хранилища является одной из рекомендованных, т.е. использует названия trunk, branches и tags для обозначения трех главных областей. Если структура отличается, то определение того, что является tag/branch/trunk (известно также как шаблоны классификации) может быть настроено в диалоге настроек: «Настройки графа ревизий»

Перетаскивание мышью

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

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

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

Исправление внешних переименований

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

Исправление внешних копирований

Если вы скопировали файл, но забыли, что это надо было сделать при помощи команды Subversion, вы можете исправить такое копирование, чтобы новый файл не потерял свою историю. Просто выберите оба файла: и со старым именем (нормальный или изменённый), и с новым именем (неверсированный) и используйте Контекстное менюПоправить копирование, чтобы обозначить эту пару файлов как копирование.

Группы изменений

Диалог фиксации поддерживает группы изменений Subversion, предназначенных для группировки связанных файлов. Об этой возможности рассказывает «Группы изменений».

Фиксировать только части файлов

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

Щёлкните правой кнопкой мыши на файле и используйте Context MenuВосстановить после фиксации. При этом будет создана копия файла. Затем вы можете редактировать файл, например, в текстовом редакторе и отменить все изменения, которые вы не хотите фиксировать. После сохранения всех таких изменений вы можете фиксировать файл.

Использование TortoiseMerge

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

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

Исключение элементов из списка для фиксации

Иногда у вас есть версированные файлы, которые часто изменяются, но которые вы не хотели бы фиксировать на самом деле. Иногда это говорит о дефекте в вашем процессе сборки - почему эти файлы версированы? А не лучше использовать файлы шаблонов? Но иногда это неизбежно. Классическая причина - среда разработки изменяет пометку даты-времени файла проекта при каждой сборке. Файл проекта должен быть версированным, поскольку включает настройки для сборки, но его не нужно фиксировать только из-за того, что пометка даты-времени изменилась.

Чтобы помочь в затруднительных случаях вроде этого, была зарезервирована специальная группа изменений, называемая ignore-on-commit. Любой файл, добавленный в эту группу, не будет автоматически отмечаться в диалоге фиксации. Вы по-прежнему можете зафиксировать изменения в этом файле, но вы должны выбрать его в диалоге фиксации вручную.

Сообщения журнала при фиксации

Убедитесь, что ввели сообщение журнала, описывающее фиксируемые изменения. Впоследствии, при просмотре сообщений журнала проекта, это поможет вам увидеть, что и когда происходило. Сообщение может быть настолько длинным или коротким, как вы пожелаете; во многих проектах есть рекомендации о том, что должно быть в него включено, какой должен использоваться язык, а иногда в них даже задаётся строгий формат сообщения.

Вы можете применять простое форматирование в сообщениях журнала, используя соглашения, похожие на употребляемые в электропочте. Чтобы текст выглядел по-другому, можно использовать *текст* для жирного начертания, _текст_ для подчёркивания и ^текст^ для курсива.

Рисунок 4.9. Проверка правописания в диалоге фиксации

Проверка правописания в диалоге фиксации


В TortoiseSVN включена проверка правописания, чтобы помочь вам в написании грамотных сообщений журнала. Она выделяет любое неправильно написанное слово. Воспользуйтесь контекстным меню для доступа к предлагаемым исправлениям. Конечно, проверка правописания не знает каждый технический термин, который вы можете использовать, так что правильно написанные слова иногда могут показываться как ошибочные. Но не беспокойтесь - вы можете тут же добавить их в ваш персональный словарь при помощи контекстного меню.

Окно сообщения журнала включает также средство автозавершения имён файлов и функций. Оно использует регулярные выражения для извлечения имён классов и функций из (текста) фиксируемых файлов, а также самих имён файлов. Если слово, которое вы вводите, соответствует чему-либо в списке (после того, как вы набрали хотя бы 3 символа, или нажали Ctrl+пробел), появляется выпадающий список, позволяющий выбрать полное имя. Регулярные выражения, поставляемые вместе с TortoiseSVN, содержатся в папке bin установки TortoiseSVN. Вы можете задать собственные регулярные выражения и сохранить их в файле %APPDATA%\TortoiseSVN\autolist.txt. Конечно же, ваш частный список не будет перезаписан при обновлении установки TortoiseSVN. Если вы малознакомы с регулярными выражениями, взгляните на введение по адресу http://en.wikipedia.org/wiki/Regular_expression[2], а также на доступные в Сети документацию и учебный курс по адресу http://www.regular-expressions.info/.

Получить правильное регулярное выражение бывает сложно. Поэтому для поиска подходящего выражения есть тестовый диалог, в котором вы вводите выражение и набираете имена файлов для проверки. Запускайте его из командной строки с помощью команды TortoiseProc.exe /command:autotexttest.

Окно сообщения журнала также поддерживает фрагменты для сообщения фиксации. Эти фрагменты показываются в выпадающем списке автоподстановки когда вы нажмете горячую клавишу, и после выбора фрагмента в выпадающем списке вставляется полный текст фрагмента. Фрагменты поддерживаемые TortoiseSVN сохраняются в папке bin установки TortoiseSVN. Вы также можете определить собственные фрагменты и хранить их в файле %APPDATA%\TortoiseSVN\snippet.txt. Символ # – это комментарий. Разделители строк вставляются следующим образом: \n и \r. Чтобы вставить обратный слэш: \\.

Вы можете повторно использовать введённые ранее сообщения журнала: достаточно щёлкнуть на кнопку Недавние сообщения и появится список из нескольких последних введённых вами для этой рабочей копии сообщений. Количество сохраняемых сообщений может быть указано в диалоге настроек TortoiseSVN.

Вы можете очистить все сохранённые сообщения фиксации со страницы Сохранённые данные настроек TortoiseSVN, или же вы можете убирать отдельные сообщения непосредственно в диалоге Предыдущие сообщения журнала при помощи клавиши Delete.

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

Другой способ вставить имена в сообщение журнала - просто перетащить файлы из списка файлов в область редактирования.

Специальные свойства папок

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

Интеграция с инструментами отслеживания ошибок

Если у вас подключена и действует система отслеживания ошибок, вы можете указать одну или несколько проблем в поле ввода ID ошибки / N проблемы. Если вводится сразу несколько проблем, то они должны быть разделены запятыми. Или, если вы используете основанную на регулярных выражениях поддержку системы отслеживания ошибок, просто добавьте упоминания проблем как часть сообщения журнала. Больше узнать об этом можно, прочитав «Интеграция с системами отслеживания ошибок/проблем».

Ход выполнения фиксации

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

Рисунок 4.10. Диалог выполнения, отображающий ход выполнения фиксации

Диалог выполнения, отображающий ход выполнения фиксации


Различные действия, производимые при фиксации, в окне выполнения обозначаются разным цветом:

Голубой

Фиксация изменений.

Пурпурный

Фиксация новых добавлений.

Темно-красный

Фиксация удалений или перемещений.

Чёрный

Все другие элементы.

Это используемая по умолчанию цветовая схема, но вы можете настроить эти цвета в диалоге настроек. Для дополнительной информации смотрите «Настройки цветов в TortoiseSVN».



[2] Есть статья об этом и в русском разделе Википедии: http://ru.wikipedia.org/wiki/Регулярные_выражения - прим. переводчика