Когда SVN с работами отслеживания слияния, это действительно хорошо, я люблю его. Но это продолжает скручиваться. Мы используем TortoiseSVN. Мы непрерывно получаем следующее сообщение:
Ошибка: Повторно интегрируйте может только использоваться, если изменения 1 234 - 2 345 были ранее объединены от Соединительной линии / до повторно интегрировать источника, но дело обстоит не так
Для ссылки это - метод, который мы используем:
Я Объединяю диапазон изменений от соединительной линии до ответвления (оставляющий незаполненный диапазон, таким образом, это должны быть все изменения), только до повторно интегрировать операции, таким образом, ответвление должно правильно синхронизироваться с соединительной линией.
Прямо сейчас Соединительная линия имеет несколько свойств отслеживания слияния SVN, связанных с ним. Должен это? Или разве Повторно интегрирование не должно добавлять информацию об отслеживании слияния?
Есть ли что-то не так с нашим процессом? Это делает SVN неприменимый - 1 из каждых 3, повторно интегрирует, вынуждает меня погрузиться в и взлом в информации об отслеживании слияния.
Прыжок кролика может быть решением.
По сути, вместо непрерывного слияния изменений ствола в одну ветку (назовем его branch / foo
), когда вы хотите вытащить эти изменения из ствола:
ветки / foo2
). ветвей / foo
в ветвей / foo2
). branch / foo
). Ваша проблема в том, что вы пытаетесь использовать Reintegrate merge на ветке, которая была "испорчена" тем, что на ней уже было сделано "половинное слияние". Мой совет - игнорировать reintegrate и придерживаться обычного слияния ревизий, если это ваш рабочий процесс.
Однако, основная причина появления ошибок заключается в том, что SVN выполняет некоторые проверки за вас. В этом случае, если в слиянии есть лишняя mergeinfo от отдельных файлов, то svn выдаст ошибку и не позволит вам выполнить слияние - в основном потому, что в этом случае могут возникнуть ошибки, которые вы можете не заметить. В терминологии svn reintegrate это называется subtree merge (прочитайте раздел Reintegrate to the Rescue, особенно спорную проверку reintegrate в конце).
Вы можете прекратить запись mergeinfo при выполнении промежуточных слияний, или просто оставить ветку в покое до её готовности - тогда слияние подхватит изменения, внесённые в ствол. Я думаю, вы также можете обойти эту проверку, сливая только весь ствол с веткой, а не отдельные файлы, сохраняя таким образом mergeinfo для финальной реинтеграции в конце.
EDIT:
@randomusername: Я думаю (никогда не смотрел слишком пристально), что перемещение попадает в ловушку "частичного слияния". Одна из замечательных особенностей SVN в том, что вы можете делать разреженную проверку - получать только частичную копию дерева. Когда вы объединяете частичное дерево, SVN не может сказать, что всё было объединено, поскольку это явно не так, поэтому он записывает информацию о слиянии немного по-другому. Это не помогает при реинтеграции, так как при реинтеграции приходится сливать всё обратно в ствол, и теперь обнаруживается, что некоторые части были изменены без слияния, поэтому он жалуется. С перемещением происходит примерно то же самое - часть разветвленного дерева теперь отображается в mergeinfo иначе, чем ожидалось. Я бы не стал возиться с reintegrate, а придерживался бы обычного слияния в диапазоне ревизий. Это хорошая идея, но она пытается быть слишком многими вещами для слишком многих пользователей в слишком многих различных обстоятельствах.