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

Сообщение об ошибке отсутствия пробелов при реинтеграции ветки в магистраль в 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 with --reintegrate жалуется на недостающие диапазоны, но mergeinfo кажется правильным

4b9b3361

Ответ 1

Сначала вы должны объединить ревизии 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

Ответ 2

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

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

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

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

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

Завершите все изменения и снова заново

Ответ 3

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

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

enter image description here

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

enter image description here

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

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

Ответ 4

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

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

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

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

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

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

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

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

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

svn log --stop-on-copy svn://svn/project/trunk/topDir | grep '^ r' | хвост -1 | sed -e 's/^ r//1'-e' s/. *//g '

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

Удачи.

Ответ 5

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

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

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

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

Ответ 6

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