Subversion merge
Содержание
Subversion/Слияние в TortoiseSVN
Иногда вы работаете над ветвью. По прошествии некоторого времени вы можете захотеть синхронизировать ваши изменения с транком. Или по мере отправки коммитов с кодом в транк ваша ветвь потихоньку начинает терять синхронизацию с транком, и для избежания работы над слишком старым кодом, вы хотите синхронизировать коммиты транка с вашей ветвью. В этой статье мы будем синхронизировать изменения в транке с ветвью, а синхронизация в обратном направлении производится аналогично.
Подготовка
Перед началом синхронизации, вам необходимо иметь чистую (без локальных изменений) версию целевой ветви, в данном случае ros-amd64-bringup. Обновите её до последней ревизии.
Получение диапазона ревизий
Вам необходимо знать диапазон ревизий, с которыми вы хотите произвести слияние. Начальной ревизией будет та же ревизия, из которой производилось слияние в ветвь / в транк. Это должно быть указано в коммит-логе последней синхронизации. В этом примере это ревизия 36700. Если синхронизация ещё не производилась, укажите ревизию ветви. Конечной ревизией обычно будет самая свежая ревизия исходной ветви/транка. В этом примере мы выбираем ревизию 36800.
Открытие диалога слияния
Щёлкните правой клавишей на целевой ветви в Проводнике, выберите "TortoiseSVN", а затем "Merge...".
Выбор типа слияния
Обычно, необходимо использовать "Merge a range of revisions" ("Слияние с диапазоном ревизий"). Выберите этот тип и нажмите "Next".
Выбор исходной ветви и диапазона ревизий
В этом примере мы хотим синхронизировать изменения транка с ветвью, так что в поле "URL to merge from" мы выбираем транк, а точнее, подпапку транка reactos, так как в этом случае локальная копия является подпапкой reactos ветви ros-amd64-bringup, а остальные папки нас не интересуют.
Если папка ещё не выбрана и не указана в поле "from", нажмите на "..." справа от текстового поля и выберите её из репозитория.
Ранее мы уже определили диапазон ревизий, так что просто введите его в поле Revision. Помните что диапазон ревизий должен начинаться с последней ревизии, *из которой было произведено* слияние. Обычно, конечной ревизией является самая новая ревизия, но в данном случае мы выбираем меньшую ревизию (36800). Затем нажмите на "Next".
Параметры слияния
В этом последнем диалоговом окне, выберите глубину слияния ("merge depth"), указав тем самым изменяемые части вашей локальной копии. Обычно, вам будет нужно применить изменения всей рабочей копии, так что выберите "working copy". Вы можете выбрать "Compare whitespaces", если вы хотите проигнорировать эти изменения (не рекомендуется).
Тестовый запуск
Если вы хотите избежать проблем, сначала щёлкните на "Test merge". Это приведёт к эмуляции процесса слияния и вам будет показан отчёт о результате операции, но ваша локальная копия изменена не будет. По окончании процесса, вы увидите отчёт о результате. Если вы получаете множество ошибок и слияние практически не происходит, то вы, вероятно, выбрали неверную папку с исходным кодом или начальную ревизию. В этом случае исправьте настройки и попробуйте еще раз. Наличие нескольких конфликтов - это нормально, и они могут быть разрешены вручную позже.
Выполнение слияния
Если тестовый запуск прошёл успешно, делайте реальное слияние, нажав на "merge". Теперь выбранный диапазон ревизий будет слит с вашей локальной копией.
Разрешение конфликтов
<TODO>
Отправка коммитов с изменениями
Прочтите статью Subversion/Использование TortoiseSVN.