Сообщение об ошибке отсутствия диапазонов при реинтеграции ветви в транк в Subversion 1.5

Я пытаюсь реинтегрировать ветку разработки в ствол в моем хранилище Subversion 1.5. Я слил все изменения из ствола в ветку разработки до этой операции. Теперь, когда я пытаюсь реинтегрировать изменения из ветки, я получаю следующее сообщение об ошибке:

Command: Reintegrate merge https://dev/svn/branches/devel into C:\trunk  
Error: Reintegrate can only be used if revisions 280 through 325 were previously   
Error: merged from https://dev/svn/trunk to the reintegrate   
Error: source, but this is not the case:  
Error:   branches/devel/images/test  
Error:     Missing ranges: /trunk/images/test:280-324  
...

Затем сообщение продолжает жаловаться на некоторые папки в моем проекте. Но когда я снова пытаюсь объединить изменения из ствола в ветку разработки, TortoiseSVN сообщает мне, что объединять нечего (поскольку я уже объединил все изменения ранее):

Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry  
Completed: C:\devel  

Я пытаюсь следовать инструкциям здесь: http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html, но в решении такой проблемы нет ничего.

Есть идеи? Возможно, я должен просто удалить ствол, а затем сделать копию моей ветви? Но я не совсем уверен, безопасно ли это.

Смотрите также

SVN Merge с --reintegrate жалуется на отсутствующие диапазоны, но Mergeinfo кажется правильным

5 ответов

Решение

Сначала вы должны объединить ревизии r280-r324 из магистрали в вашу ветку.

Кажется, вы уже слили r325 в свою ветку, однако --reintegrate должен получить все ревизии до последней слитой ревизии. Там не должно быть никакого разрыва. Итак, здесь маленький Diag:

           +----------------------> /branches/devel
          /                    /   \<--merge not working!
 --------/-------+--+---+-----+---------> trunk
         |       \  |  /      |
        280       \ V /      325
                    V
                  missing sync merges from trunk to branch

Я думаю, что это ваша структура ветки, поэтому вам нужно синхронизировать все изменения от ствола к вашей ветке. Вы только слили r325, так что просто объедините r280-r324, и после этого вам будет хорошо использовать --reintegrate

Мы боролись с этой проблемой в течение нескольких недель, и мы наконец решили ее.

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

Решением было добавить недостающие диапазоны в свойство svn: mergeinfo файла или папки в нашей ветке.

Для каждой строки "Отсутствующие диапазоны: путь: revision_range" в сообщении, которое вы получили:

  • Отредактируйте свойство svn: mergeinfo в файле / папке, указанной в объединенной ветке
  • Добавьте следующее: строка в конце значения свойства (например, /trunk/images/test:280-324)
  • Сохранить свойство SVN

Внесите все изменения и реинтегрируйте снова

У меня была эта проблема, и в конечном итоге она была вызвана ошибочными свойствами SVN для папки в моей ветке.

Решение было простым - я слился из магистрали в свою ветку, используя конкретный номер ревизии, который, как сообщалось, отсутствовал, например

И затем, указав, чтобы записать только слияние, например,

Это действие правильно привело мою ветку в соответствие со стволом, и моя последующая реинтеграция ветви в ствол прошла успешно, без сообщения об ошибке отсутствующих диапазонов.

Этот метод позволяет избежать ручного редактирования любых свойств svn:mergeinfo для любых файлов / папок.

Я перестал получать эти проблемы, когда начал использовать опцию -r для команды svn merge и не пытался выполнить --reintegrate до тех пор, пока я не слился без него. Я использую SVN 1.6.1.

Вот что я делаю:
1. при объединении из ветви в транк или из транка в ветвь я использую опцию -r следующим образом:

 cd branchWorkArea/topDir
 svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
  1. когда я разрешаю любые конфликты и тестирую свой код, я фиксирую слияние с веткой, а затем сливаю ветку с стволом, используя те же основные параметры (особенно -rBranchPoint:HEAD)

  2. когда транк проверен и зафиксирован, я использую опцию --reintegrate для закрытия ветки. Убедитесь, что вы также используете опцию -rbranchPoint:HEAD.

Для других вариантов я всегда использую

--depth Infinity (по умолчанию бесконечность в 1.6.2, но не раньше)
-x -b -x -w --ignore-eol-style

Может быть, мне просто повезло, но кажется, что все работает лучше.

Чтобы найти точку ветвления для ветки, вы делаете журнал svn --stop-on-copy, а затем просматриваете самую последнюю версию - это будет копия svn, которая создала ветвь.

Чтобы сделать это на Linux, я делаю что-то вроде этого:

svn log - остановка при копировании svn: // svn / project / trunk / topDir |
grep '^ r' | хвост -1 | sed -e 's/^r//1'-e 's/ .*//g'

это должно напечатать номер ревизии точки ветвления.

Удачи

Это не ответ, а уточняющий вопрос.

Мое сообщение об ошибке:

Reintegrate can only be used if revisions 2669 through 3403 were previously merged from
https://../schemas
to the integrate source, but this is not the case:
trunk/schemas:
Missing ranges:
../schemas:2673,2682,2720,2736,2878,2960,3003,3057

Я объединил ревизии, используя решение, предоставленное @Greg Trevellick, все еще получая сообщение об ошибке.

Когда я открываю свойство svn:mergeinfo после ответа @pako в папке схем, содержимое выглядит следующим образом

/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057

Я не уверен, как я должен изменить этот контент. Похоже, все пропущенные диапазоны есть.

У меня просто была эта проблема, и для меня сработало, во-первых, синхронизировать ветку с магистралью, чтобы ветка могла получать последние обновления из магистрали. После этого я попытался реинтегрировать ветку в ствол и работал нормально.

Другие вопросы по тегам