Svnadmin загрузка из dumpfile вызывает "файл не найден ошибка". Помочь?

дано:

Repository_1-source

Repository_2 - назначения

Я создал файл дампа Repository_1 / Folder1, используя комбинацию svnadmin и svndumpfilter

при загрузке из файла дампа от Repository_1 / Folder1 на Repository_2 / Trunk все нормально но

при загрузке из Repository_1/Folder1 / подпапка(создала еще один дамп для этого) в Repository_2 / trunk Я получаю следующую ошибку:

svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder'

может кто-нибудь объяснить?

5 ответов


оказывается, что структура (пустые папки) в пункте назначения должна быть предварительно создана. Так, Если вы хотите сделать это:

При загрузке из Repository_1/Folder1 / подпапка(создала еще один дамп для этого) в Repository_2 / trunk

вам нужно создать эту структуру в svn

Repository_2 / trunk / Folder1

Примечание: вам нужно только создать родителей, а не саму папку, поэтому НЕ СОЗДАВАТЬ Repository_2/trunk/Folder1 / подпапка


вы получите эту ошибку, если кто-то скопировал что-то из trunk/Folder1 в trunk/Folder1/Sub-folder. поскольку вы включили только trunk/Folder1/Sub-folder в свой дамп, он больше не может найти необходимые файлы из trunk / Folder1 и останавливается с этой ошибкой.

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


Я только что испытал эту ошибку, которую я проследил до недавнего обновления сервера и svnadmin dump/load цикл. Проблема заключалась в том, что я настроил репозиторий в другом каталоге, чем тот, в котором он был создан.

на старой машине я использовал inetd.conf для выполнения svnserve:

svnserve -r /var/svn/main

и репозиторий был в /var/svn / main

однако на новой машине у меня был inetd.conf указывая на /var/svn:

svnserve -r /var/svn

у меня уже был заказ со старого сервера, поэтому, когда я пытался зафиксировать путь назначения, не существовало, потому что я случайно добавил другой компонент в URL-адрес, так что svn://host/source/trunk стало svn://host/main/source/trunk.

я мог бы исправить это, перемещая каталоги, но вместо этого я решил переписать URL-адрес рабочей копии с помощью svn switch --relocate.

Примечание: быстрая диагностика, чтобы увидеть, является ли это проблемой, чтобы перейти в каталог в рабочей копии, введите svn info чтобы получить URL репозитория и затем введите svn ls <myUrl>. Если это дает No repository found ошибка тогда вы знаете, что это причина.


как отметил в этой теме, svnrdump работает иначе, чем svndump.

svndump + svndumpfilter:

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

svnrdump:

  • создает самосогласованный дамп-файл.
  • требуется подпространство, если вы хотите сделать эквивалент svndumpfilter include. Например, svnrdump https://server.example.com/svn/repo/branches/1.4 захватит все изменения, влияющие на / branches / 1.4.
  • может потребоваться дополнительная | svndumpfilter include / --drop-all-empty-revs --renumber-revs.

итог: svnrdump вероятно, будет работать лучше.


загрузка дампа завершается неудачно, потому что trunk/Folder1 создание было отфильтровано svndumpfilter. Согласно этот блог, эти шаги необходимы на дампе:

вы можете создать trunk/Folder1 в дампе, отредактировав сам дамп и добавив в первую редакцию следующий блок:

Node-path: trunk/Folder1
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10
PROPS-END

этот блок должен быть вставлен в блоки реквизита первой редакции.

затем дамп может быть загружен svnadmin.