Реинтеграция может использоваться только в том случае, если версии 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
Действие: Добавлен Путь:/branches/qst Копировать из пути:/trunk
Для меня это сообщение об ошибке говорит, что ветвь не была из-за туловища, что неверно.
Любые идеи?
Ответы
Ответ 1
Если вы работаете в филиале и постоянно обновляете его работу, вы можете быть смущены, когда создаете рабочую копию соединительной линии и пытаетесь реинтегрировать свою ветку, если вы получите сообщение примерно так:
$ 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.
Как только я это сделал, я смог вернуться к рабочей копии туловища и без проблем реинтегрировать ветку.
Я надеюсь, что это поможет
Ответ 2
[[Хотя мое решение сработало для меня в прошлом, это может привести к неправильным результатам с современными клиентами 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 ...
После того как я завершил это, мое слияние выполнено нормально.
Ответ 3
Если вы попытаетесь реинтегрировать свою ветку в магистраль, и вы увидите такие ошибки от TortoiseSVN:
![Merge reintegrate test only failed!: "Reintegrate can only be used if some revisions were previously merged from trunk, but this is not the case"]()
Нажмите на текст ошибки и нажмите CTRL + A, CTRL + C, чтобы скопировать весь текст.
Вставьте текст в следующую строку этого PowerShell script:
@"
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 $_" }
script извлекает относительные пути файлов с проблемой mergeinfo и выводит список команд для исправления каждого из них.
Возможно, вам придется изменить значение 'userdata'
в соответствии с вашей структурой репозитория.
Выполните команду script, чтобы вывести команды, необходимые для устранения проблемы mergeinfos.
В этом примере script будет выдавать этот результат:
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'.
Как и в Серый ответ, теперь вы должны зафиксировать изменения в ветке и попытаться снова интегрироваться. На этот раз это должно сработать!
Ответ 4
На самом деле я исправил его, используя опцию "Слияние двух разных ветвей", чтобы объединить соединительную линию и ветку в мою рабочую копию. Затем я передал это сундуку.
Замечательное
Ответ 5
Что-то, что сработало для меня в черепахе SVN: вместо слияния всех ревизий из ветки, выберите конкретный диапазон и вручную выберите все свои ревизии из ветки. ![]()
Ответ 6
Просто выполняйте, как говорит SVN.
- Слейте ветку из Реверсии, которую SVN сообщает вам.
- Реинтегрируйте из ветки в магистраль
Ответ 7
См. также мой ответ здесь для моего опыта аналогичного случая. Я не уверен, что это источник вашей проблемы, но похоже, что Subversion 1.8 имеет проблемы с mergeinfo, когда два изменения отменяют друг друга.
Ответ 8
Я столкнулся с этой проблемой. Я сделал запись SVN на моей ветке, чтобы найти, был ли я соединил сундук с моей веткой.
Я отметил все изменения.
Затем я объединил свою ветку в магистраль, указав изменения вручную. Я указал все диапазоны, чтобы исключить ревизии, если бы я объединил сундук. Мне удается объединить мою ветку.
Мне нужно было сделать некоторые реверты на mergeinfo, но я получил свой код.
Я сразу удалил ветку.
Ответ 9
Я получил эту ошибку после частичной проверки ветки. Я постоянно обновлял ветку с помощью ствола, но версии ствола для частей ветки, которые не были извлечены, конечно, не обновлялись. Исправление должно было сделать полную проверку ветки и затем объединить все изменения ствола. После передачи их в ветку я мог успешно слить ветку в ствол.
Ответ 10
Я знаю, что это старый пост, но я тоже пытался решить эту проблему, пока не обнаружил, что файлы, перечисленные в сообщении об ошибке, имеют свойство SVN.
Я щелкнул правой кнопкой мыши по проблемным файлам: TortoiseSVN> Properties и обнаружил, что в файле есть два svn: mergeinfo, и один из них не унаследован от данных. Поэтому я удалил эту информацию Mergeinfo.
Я использую TortoiseSVN 1.12.2, сборка 28653 - 64-битная.