Проблема слияния Subversion: Реинтегрировать пока не удается - PullRequest
2 голосов
/ 25 ноября 2008

Я оцениваю возможности ветвления / слияния Subversion, и я решил провести простой тест - я разветвил существующий проект, изменил комментарий в одном файле, а затем произвел реинтеграцию слияния через Tortoise.

Не удалось:

Команда: Реинтегрировать объединение https://oscar/svn/Baxtech/ViM/Branches/Test3 в C: \ Inntec \ VS2008 \ Baxtech \ ViM
Ошибка: Невозможно реинтегрировать из 'https://oscar/svn/Baxtech/ViM/Branches/Test3':
Ошибка: в него были объединены некоторые ревизии, которые не были объединены
Ошибка: в цель реинтеграции; сначала объедините их, а затем повторите попытку.

Я гуглил по этому поводу и нашел несколько сообщений о том, что это связано с тем, что mergeinfo создается при переименованиях и изменениях каталогов в старых версиях Tortoise.

Я недавно обновил предыдущую версию Tortoise до 1.5.5, однако похоже, что эта проблема была до 1.5. * ... И я только изменил некоторые комментарии в одном файле. Я не делал никаких переименований или изменений структуры каталогов.

Опять же, мы работали с транком в течение некоторого времени (без каких-либо ветвлений), так что, может быть, проблема там существует?

Так что, если есть исправление, я был бы очень признателен за помощь. Кроме того, хотя - это типично? Это был действительно очень простой тест, и, к сожалению, сейчас я немного боюсь использовать Subversion для ветвления.

Subversion: 1.5.4 (через сервер VisualSVN)
Черепаха: 1,5,5

Мы также используем Visual Studio 2008.

Спасибо!

Brian

Ответы [ 6 ]

6 голосов
/ 26 ноября 2008

Это также случилось со мной некоторое время назад.

Я не могу вспомнить, что именно сделал, чтобы вызвать эту проблему, но могу сказать, что я также использовал версию до 1.5, а затем переключился на 1.5.0.

Subversion отслеживает слияния, используя свойство svn: mergeinfo для каждого каталога. Это свойство должно присутствовать только в корневом пути рабочей копии (исправьте меня, если я ошибаюсь). Когда я увидел эту ошибку, я заметил, что версии до 1.5 создавали явную mergeinfo для файлов внутри рабочей копии, что препятствовало нормальной работе стабильной версии. Как вы сказали в своем последнем ответе , удаление этих дополнительных записей mergeinfo устранило проблему и для меня.

Я предлагаю попробовать свежий репозиторий без коммитов, поступающих из бета-версий, и посмотреть, произойдет ли это снова.

5 голосов
/ 11 декабря 2008

Проблема (чаще всего) в том, что когда источник слияния имеет некоторую информацию о слиянии поддерева, svn 1.5 выдает сообщение об ошибке. Решение, как вы правильно указали, - удалить любое поддерево mergeinfo. Подробный авторитетный ответ можно найти по адресу: http://blogs.collab.net/subversion/2008/07/subversion-merg/

2 голосов
/ 26 ноября 2008

Эта проблема связана с MergeInfo. Я не совсем уверен, в чем проблема, но я думаю, что я очистил MergeInfo, и теперь все в порядке.

Мне нужно узнать немного больше о том, почему у моего MergeInfo возникла проблема и что она на самом деле делает. Очень расстраивает!

РЕДАКТИРОВАТЬ: Прошло немного времени с тех пор, как мы обновились, и я больше не сталкивался с этой проблемой.

1 голос
/ 25 ноября 2008

Мне гораздо проще просто слить из командной строки.

svn merge -r N:M SOURCE [PATH]

N - это ревизия, которую вы сделали, ветвь, M - ревизия, в которую вы хотите внести изменения (или HEAD для текущей). Источник - путь ветви. Если вы выполните это в своей целевой рабочей директории, вам не нужен последний параметр.

Пример:

//sitting in main trunk
svn merge -r 55:HEAD svn://my.repo.url/branches/my_branch

Это объединит все изменения, начиная с 55 года в ветви, до ствола.

0 голосов
/ 25 ноября 2008

Я давно использую SVN и никогда не видел этого; Разумеется, я не так много использовал черепаху. Несколько моментов для рассмотрения:

  1. Журнал показывает, что вы пытаетесь объединить ../ViM/branches/.. в ../ViM/. У вас нет ../ViM/trunk/ или журнал просто распечатывает вещи смешно? Я полагаю, что попытка объединить ветвь с чем-то другим, кроме базы кода, приведет к путанице.

  2. Вносили ли вы какие-либо изменения в ствол после создания ветви, но до ее реинтеграции? Если это так, убедитесь, что вы слили эти изменения в ветку, прежде чем пытаться слить их обратно в ствол.

  3. Запустите svn cleanup в своем филиале и транке, чтобы убедиться, что все незаконченные бизнесы там очищены.

  4. Я не уверен, что это вызовет какие-либо проблемы, но ваша рабочая копия транка может потребоваться обновить, прежде чем вы сможете реинтегрировать изменения.

0 голосов
/ 25 ноября 2008

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

  • Вы начинаете объединение из рабочей копии ствола (щелкните правой кнопкой мыши -> SVN-> Объединить)?
  • Что произойдет, если вы скажете Test merge?
  • Как насчет проверки на происхождение игнорирования?
  • Убедитесь, что глубина слияния равна «Рабочая копия»

Кстати, какая версия SVN у вас в хранилище?

...