Реинтеграция может использоваться только в том случае, если ревизии X-Y были ранее объединены с <URL> для реинтеграции источника, но это не так

Использовал ветки SVN с Tortoise 1.6. Я периодически сливал ствол в ветку, чтобы поддерживать его в актуальном состоянии.

Сегодня я решил реинтегрировать филиал. Я выбрал "Reintegrate a branch" от Tortoise и получил следующее сообщение об ошибке:

Реинтеграция может использоваться только в том случае, если ревизии с 4709 по 5019 были ранее объединены с http://subversion/svn/saxdev/trunk к реинтеграции источника, но это не так

Затем он перечислил около 50 файлов с такими описаниями:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

Редакция 5019 является головной версией. Ревизия 4737 была ревизией, когда я создавал ветку.

У меня это из журнала для ревизии 4737

Действие: добавлен путь: /branch /qst Скопировать из пути: /trunk

Для меня это сообщение об ошибке говорит о том, что ветвь не была изначально из транка, что не соответствует действительности.

Есть идеи?

8 ответов

Решение

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

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

Я видел несколько обходных путей в Google, но они заставляли меня нервничать как "хаки". Чтобы решить эту проблему, я решил сделать именно то, на что намекает подрывная сила в сообщении. Я вернулся в свою ветку и явно объединил указанные ревизии:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Как только я это сделал, я смог вернуться к рабочей копии транка и без проблем реинтегрировать ветку.

надеюсь, это поможет

[[Хотя мое решение работало для меня в прошлом, оно может привести к неправильным результатам с современными клиентами SVN. В нашем случае ошибки слияния казались побочными продуктами автоматизации, которые запутывали нашу историю SVN, а не реальную деятельность. Я оставляю это здесь для потомков, но, пожалуйста, примите во внимание принятый ответ. ]]

Решением для меня было удалить любую svn:mergeinfo свойства, которые каким-то образом привязываются к отдельным файлам в иерархии.

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

Чтобы найти файлы с информацией mergeinfo, вы можете сделать:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Затем вы можете удалить свойства mergeinfo:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

После того как я завершил это, мое слияние выполнено нормально.

Если вы попытаетесь реинтегрировать вашу ветку в транк, и вы увидите такие ошибки от TortoiseSVN:

Тест реинтеграции слияния только провалился!:

Нажмите на текст ошибки и нажмите CTRL + A, CTRL + C, чтобы скопировать весь текст.

Вставьте текст в следующую строку этого сценария PowerShell:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

Сценарий извлекает относительные пути к файлам с проблемой mergeinfo и выводит список команд для исправления каждой из них.

Возможно, вам придется изменить 'userdata' значение в соответствии с вашей структурой хранилища.

Выполните сценарий, чтобы вывести команды, необходимые для устранения проблемы mergeinfos.

В этом примере скрипт выдаст такой вывод:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

В командной строке вы можете перейти к базе филиала (myproject) и выполнить команды для удаления проблемы mergeinfos.

Вы должны увидеть результат примерно так:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Как и в ответе Грея, теперь вы должны зафиксировать изменения в ветке и попытаться реинтегрировать снова. На этот раз это должно сработать!

На самом деле я исправил это с помощью опции "объединить две разные ветви", чтобы объединить ствол и ветвь в мою рабочую копию. Тогда я передал это в багажник.

дивный

Что-то, что сработало для меня в черепахе SVN: вместо слияния всех ревизий из ветви, выберите конкретный диапазон и вручную выберите все свои ревизии из ветви.

Просто делай, как тебе говорит SVN.

  1. Слить ветку с реверсии, которую вам говорит SVN
  2. Реинтегрировать из филиала в ствол

Получил эту проблему на

  • TortoiseSVN 1.9.7, сборка 27907 - 64 бит, 2017/08/08 19:34:38
  • Subversion 1.9.7, -выпуск
  • апр 1.5.2
  • апр-утиль 1.5.4
  • крепостной 1.3.9
  • OpenSSL 1.0.2l 25 мая 2017 г.
  • zlib 1.2.8
  • SQLite 3.14.1

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

https://i.stack.imgur.com/uC41Q.png

Добавление этого здесь, чтобы помочь тем, кто использует Tortoise SVN

Я получил эту ошибку после частичной проверки ветки. Я постоянно обновлял ветку с помощью ствола, но версии ствола для частей ветки, которые не были извлечены, конечно, не обновлялись. Исправление должно было сделать полную проверку ветви и затем объединить все изменения ствола. После передачи их в ветку я мог успешно слить ветку в ствол.

Смотрите также мой ответ здесь для моего опыта с аналогичным случаем. Я не уверен, является ли это источником вашей проблемы, но похоже, что Subversion 1.8 имеет проблемы с mergeinfo, когда два изменения отменяют друг друга.

Я столкнулся с этим вопросом. Я сделал журнал SVN на своей ветке, чтобы найти, где я слил транк в мою ветку.

Я отметил все изменения.

Затем я произвел слияние своей ветви с транком, указав ревизии вручную. Я указал все диапазоны, чтобы исключить ревизии, где я сливал ствол. Мне удается объединить мою ветку.

Мне пришлось сделать некоторые возвраты на mergeinfo, но мой код был объединен.

Я сразу удалил свою ветку.

Я знаю, что это старый пост, но я изо всех сил пытался решить эту проблему, пока не обнаружил, что файлы, перечисленные в сообщении об ошибке, имеют проблему со свойством SVN.

Я щелкнул правой кнопкой мыши проблемные файлы: TortoiseSVN > Свойства и обнаружил, что файл содержит два svn:mergeinfo, и один из них не унаследован от данных. Я удалил файл mergeinfo.

Я использую TortoiseSVN 1.12.2, сборка 28653 - 64 бит.

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