Сообщение об ошибке отсутствия диапазонов при реинтеграции ветви в транк в Subversion 1.5 - PullRequest
25 голосов
/ 18 марта 2010

Я пытаюсь реинтегрировать ветку разработки в транк в моем хранилище 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 / ru / 1.5 / svn.branchmerge.basicmerging.html , но в решении такой проблемы нет ничего.

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

Смотри также

svn merge с --reintegrate жалуется на отсутствие диапазонов, но mergeinfo кажется правильным

Ответы [ 6 ]

27 голосов
/ 24 августа 2014

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

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

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

Для каждой строки «Пропущенные диапазоны: путь: revision_range» в полученном сообщении:

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

Зафиксируйте все изменения и реинтегрируйте снова

26 голосов
/ 19 марта 2010

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

10 голосов
/ 20 декабря 2016

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

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

enter image description here

А затем указать только запись слияния, например

enter image description here

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

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

4 голосов
/ 28 сентября 2010

Я перестал получать эти проблемы, когда начал использовать опцию -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.

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

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

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

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

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

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

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

Удачи

0 голосов
/ 24 мая 2019

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

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

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

Я объединил редакции, используя решение, предоставленное @ Грег Тревеллик, все еще получаю сообщение об ошибке.

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

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

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

0 голосов
/ 16 апреля 2013

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

...