SVN merge восстановить недостающие диапазоны, но нечего объединять

Вот загадка:

C:\code\trunk> svn merge --reintegrate http://svn.e.com/repos/branches/lih --accept postpone --dry-run
svn: E195016: Reintegrate can only be used if revisions 11430 through 12384 were previously merged from http://svn.e.com/repos/trunk to the reintegrate source, but this is not the case:
  branches/lih
    Missing ranges: /trunk:11902

Но если я захожу в каталог ветки и пытаюсь объединить этот диапазон, объединять нечего!

C:\code\branches\branch> svn merge -r 11901:11902 http://svn.e.com/repos/trunk --accept postpone --dry-run
C:\code\branches\branch>

Даже svn merge -r 11898:11903 сливать не показывает.

Теперь мне кажется, что я не могу реинтегрировать свою ветку в ствол! Пожалуйста помоги!

P.S. Ветка lih не создавалась до 11906. Она была ответвлением от ветви hd, которая была разветвлена ​​от ствола (а hd уже был объединен обратно в ствол).


person Ryan    schedule 24.10.2012    source источник


Ответы (2)


Я просто столкнулся с чем-то похожим, где проблема заключалась в том, что у ствола было две отменяемых ревизии (то есть, ревизия 20865 на стволе отменена, ревизия 20857). Поэтому, когда я впервые слился из ствола в ветку, у этой пары ревизий не было ничего, что можно было бы объединить, но я не включил их в информацию о слиянии для рассматриваемых файлов. Затем, когда я попытался слить обратно из ветки в ствол, он возразил, что эти две версии отсутствуют.

Мое решение (после ручной проверки того, что ревизии отменены для рассматриваемых файлов) заключалось в том, чтобы объединить каждую из двух ревизий для явного ветвления (через svn merge ^ / trunk -c 20857 и svn merge ^ / trunk -c 20865), зафиксировать , а затем объедините ветвь со стволом. Во второй раз все прошло гладко. Это было с Subversion 1.8.0 (r1490375).

Ранее мне удалось обойти аналогичную проблему, используя слияние с --record-only, чтобы пометить изменения как должным образом объединенные в ветке, но, вероятно, безопаснее объединить фактические файлы (на всякий случай, если есть изменение, которое не совсем отменить).

Похоже на ошибку в том, как Subversion 1.8 обрабатывает mergeinfo для отмены моих изменений.

person dewtell    schedule 26.11.2013

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

Во-первых, важно, чтобы в вашей ветке были все последние коммиты в trunk. Так что синхронизируйте это (сделайте слияние от ствола к ветке).

Затем вы можете принудительно выполнить реинтеграцию, сделав это в каталоге магистрали: svn merge http://svn.e.com/repos/trunk/@REV http://svn.e.com/repos/branches/lih/ . --dry-run (но замените REV последней версией №).

person Ryan    schedule 25.10.2012
comment
Это действительно помогло мне, но вместо того, чтобы REV была последней версией ствола, мне пришлось установить его на версию, в которой была создана ветка. Это позволяет избежать модификаций с обратным слиянием, которые произошли в стволе во время разработки в ветке. - person ceztko; 30.09.2014