Что я делаю неправильно со слиянием SVN?

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

Ошибка: Повторно интегрируйте может только использоваться, если изменения 1 234 - 2 345 были ранее объединены от Соединительной линии / до повторно интегрировать источника, но дело обстоит не так

Для ссылки это - метод, который мы используем:

  1. Создайте ответвление
  2. Разработайте в ответвлении
  3. Иногда Слияние диапазон изменений от Соединительной линии до Ответвления
  4. Когда ответвление будет стабильно, Повторно интегрируйте ответвление от ответвления до соединительной линии
  5. Удалите ответвление

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

Прямо сейчас Соединительная линия имеет несколько свойств отслеживания слияния SVN, связанных с ним. Должен это? Или разве Повторно интегрирование не должно добавлять информацию об отслеживании слияния?

Есть ли что-то не так с нашим процессом? Это делает SVN неприменимый - 1 из каждых 3, повторно интегрирует, вынуждает меня погрузиться в и взлом в информации об отслеживании слияния.

16
задан RandomUsername 12 May 2010 в 15:27
поделиться

2 ответа

Прыжок кролика может быть решением.

По сути, вместо непрерывного слияния изменений ствола в одну ветку (назовем его branch / foo ), когда вы хотите вытащить эти изменения из ствола:

  1. Скопируйте ствол в новую ветку ( ветки / foo2 ).
  2. Слияние изменений из старой ветки (слияние ветвей / foo в ветвей / foo2 ).
  3. Удалите старую ветку (удалите branch / foo ).
3
ответ дан 30 November 2019 в 22:43
поделиться

Ваша проблема в том, что вы пытаетесь использовать Reintegrate merge на ветке, которая была "испорчена" тем, что на ней уже было сделано "половинное слияние". Мой совет - игнорировать reintegrate и придерживаться обычного слияния ревизий, если это ваш рабочий процесс.

Однако, основная причина появления ошибок заключается в том, что SVN выполняет некоторые проверки за вас. В этом случае, если в слиянии есть лишняя mergeinfo от отдельных файлов, то svn выдаст ошибку и не позволит вам выполнить слияние - в основном потому, что в этом случае могут возникнуть ошибки, которые вы можете не заметить. В терминологии svn reintegrate это называется subtree merge (прочитайте раздел Reintegrate to the Rescue, особенно спорную проверку reintegrate в конце).

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

EDIT:

@randomusername: Я думаю (никогда не смотрел слишком пристально), что перемещение попадает в ловушку "частичного слияния". Одна из замечательных особенностей SVN в том, что вы можете делать разреженную проверку - получать только частичную копию дерева. Когда вы объединяете частичное дерево, SVN не может сказать, что всё было объединено, поскольку это явно не так, поэтому он записывает информацию о слиянии немного по-другому. Это не помогает при реинтеграции, так как при реинтеграции приходится сливать всё обратно в ствол, и теперь обнаруживается, что некоторые части были изменены без слияния, поэтому он жалуется. С перемещением происходит примерно то же самое - часть разветвленного дерева теперь отображается в mergeinfo иначе, чем ожидалось. Я бы не стал возиться с reintegrate, а придерживался бы обычного слияния в диапазоне ревизий. Это хорошая идея, но она пытается быть слишком многими вещами для слишком многих пользователей в слишком многих различных обстоятельствах.

Полная история mergeinfo находится здесь.

3
ответ дан 30 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: