Подтвердить что ты не робот

Каков правильный способ слияния Subversion в Eclipse?

Я довольно привык к тому, как делать слияния CVS в Eclipse, и в противном случае я доволен тем, как Subclipse и Subversive работают с SVN-репозиторием, но я не совсем уверен, как правильно выполнять слияния.

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

Вопрос не относится ни к Subclipse, ни к Subversive.

Спасибо за помощь!

4b9b3361

Ответ 1

Я бы посоветовал не пытаться использовать плагины Eclipse в качестве основного доступа к Subversion.

Если вы работаете в Windows, TortoiseSVN - лучшая программа, которую я видел для доступа к Subversion. Исследуйте каталог, который вы хотите объединить, щелкните его правой кнопкой мыши и используйте параметр слияния SVN Tortoise. Предполагая неинтерактивное слияние, как только вы получите конфликты, вам придется пройти через каждый конфликтный файл и отредактировать конфликты, прежде чем пометить их как разрешенные. Для этого процесса я рекомендую программу под названием KDiff3, которая показывает вашу копию локального репозитория (то, что хранилось в .svn перед слиянием), вашу локальную копию (включая любые изменения) и копию, поступающую из репозитория, и позволяет вам легко увидеть (и даже вручную - при необходимости изменить) результат слияния. Он также автоматически обрабатывает кучу незначительных конфликтов.

KDiff3 переносима, TortoiseSVN является расширением оболочки Windows, поэтому, если вы используете другую среду, я бы попытался просто использовать SVN для слияния. Но это будет гораздо больнее:)

Ответ 2

Объединение всей ветки в туловище

  • Осмотреть историю проекта ветки, чтобы определить версию, из которой была сделана ветка

    • по умолчанию Eclipse Team "История" показывает только 25 последних изменений, поэтому вам нужно нажать кнопку в этом представлении с надписью "Показать все"
    • когда вы произнесете "Показать все", он вернет вас назад по дате перехода и покажет вам всю историю для туловища, поэтому вам придется искать свой комментарий, где вы разветвляетесь.
    • ПРИМЕЧАНИЕ. Если вы используете Tortise SVN для этой же задачи (перейдите к ветке и выберите "Показать журнал" ), она покажет вам только историю ветвей, чтобы вы могли точно указать, где началась ветка.
  • Итак, теперь я знаю, что 82517 был первым идентификатором версии истории ветвей. Таким образом, у всех версий ветки 82517 есть изменения, которые я хочу объединить в trunk

  • Теперь перейдите в проект "trunk" в рабочей области Eclipse и выберите "right click - Team - Merge"

  • Представление по умолчанию - это 1 слияние ссылок

    • выберите URL-адрес ветки, из которой вы объединяетесь
    • в разделе "Редакции" выберите "Все"
    • нажмите OK
  • Это приведет вас к перспективе "Team Synchronizing" (если вы этого не сделаете), чтобы разрешить конфликты (см. ниже)

Повторное слияние изменений ветвей в trunk

  • Ввести историю проекта соединительной линии, чтобы определить последний раз, когда вы слились в магистраль (вы должны были прокомментировать это)

    • ради аргумента можно сказать, что эта версия была 82517
  • Итак, теперь я знаю, что любая версия размером более 82517 в ветке должна быть объединена с trunk

  • Теперь перейдите в проект "trunk" в рабочей области Eclipse и выберите "right click - Team - Merge"

  • Представление по умолчанию - это 1 слияние ссылок

    • выберите URL-адрес ветки, из которой вы объединяетесь
    • в разделе "Редакции" выберите переключатель "Редакции" и нажмите "Обзор"
    • это откроет список последних 25 изменений в ветке
    • выберите все версии с числом больше 82517
    • нажмите OK (вы должны увидеть список изменений в поле ввода рядом с переключателем)
    • нажмите OK
  • Это приведет вас к перспективе "Team Synchronizing" (если вы этого не сделаете), чтобы разрешить конфликты (см. ниже)

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

  • Вы должны быть в перспективе "Team Synchronizing" . Это будет выглядеть как любая регулярная синхронизация для целей фиксации, когда вы видите новые файлы и файлы с конфликтами.

  • Для каждого файла, где вы видите конфликт, выберите "правый клик - изменить конфликты" (не дважды щелкайте по файлу, он откроет инструмент проверки фиксации, это ОЧЕНЬ другое)

    • если вы видите такие вещи, как "< < < <.working" или " → → → > .merge-right.r84513", то вы находитесь в неправильном режиме редактирования
  • после того, как вы разрешили все конфликты в этом файле, сообщите файлу о том, что "отметьте как слияние"

  • Как только все файлы свободны от конфликтов, вы можете синхронизировать проект Eclipse и передать файлы в SVN

Ответ 3

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

Ответ 4

Используйте интеграцию Eclipse, она отлично работает.

Основное изменение из CVS состоит в том, что вы объединяете только дельта из ветки, т.е. изменяете одну ревизию на другую. То есть вы должны как-то отслеживать правильную начальную ревизию (если у вас нет истории слияния с SVN 1.5)

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

Ответ 5

Во-первых, если вы видите " → → > " и такие в своих файлах, когда вы просматриваете их в Eclipse, это, вероятно, означает, что вы не смотрите на файл с правильным редактором сравнений. Попробуйте щелкнуть правой кнопкой мыши по файлу в представлении "Проект" или "Синхронизировать представление" и выбрать "Редактировать конфликты", чтобы вызвать редактор сравнения, который покажет вам конфликтующие области графически, а не как текст. Обратите внимание, что редактор сравнения, который подходит для "Редактирование конфликтов", отличается от того, который вы получаете, когда вы просто дважды кликаете по файлу в представлении "Синхронизировать" - редактор сравнения с двойным щелчком показывает различия между вашим текущим файлом и тем, как он существовал когда вы последний раз проверили или обновили его, в то время как диалог "Сравнение конфликтов конфликтов" показывает различия между двумя источниками изменений (например, изменения, которые вы объединили в сравнении с изменениями, существовавшими в вашей рабочей области перед объединением).

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

https://bugs.eclipse.org/bugs/show_bug.cgi?id=312585

Ответ 6

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

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

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

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

Ответ 7

Инструмент слияния openCollabNet для подзаголовка довольно аккуратный. Существует много типов слияния и слияния, которые я просто выполнял с ним, когда плавно. Я рекомендую его.

Ответ 8

Единственное, что не синхронизируется в представлении eclipse, - это возможность регистрации. В представлении синхронизации Team я могу просматривать все мои изменения и разрешать конфликты, поэтому было бы довольно интуитивно понятно, что регистрация там, вместо того, чтобы возвращаться к просмотру java и выполнять регистрацию.

Ответ 9

Я приземлился здесь, потому что я искал способ слияния во внешнем редакторе слияния (KDIFF3), но начал слияние с eclipse. Я не был удовлетворен приведенными выше ответами. Итак, вот ho для настройки kdiff3 как редактора слияния и diff для SVN в eclipse:

перейти в Windows → Настройки → Команда → SVN → Diff Viewer Добавить новую конфигурацию (добавить кнопку): Расширение или тип изображения: * - если вы хотите указать разные типы сопоставлений для разных редакторов, мне не понадобилось, чтобы, таким образом, alquantor.

Diff: Путь к программе C:\Program Files\KDiff3\kdiff3.exe(или везде, где у вас есть редактор слияния - sry для пути к окну, не стесняйтесь добавлять версию linux в комментарии или редактировать этот ответ.)

Аргументы: $ {base} ${mine} ${theirs}

Объединить: Путь к программе C:\Program Files\KDiff3\kdiff3.exe

Аргументы: $ {base} ${mine} ${theirs} -o ${merged}

Это, вероятно, будет работать и для других редакторов слияния, но с другим синтаксисом аргументов (подумайте, дайте нам знать:)).

Использование как обычно (team- > edit conflict) для слияния и сравнения- > foo для представления diff.

Приветствия