Загрузка Svnadmin из файла дампа вызывает "ошибка файла не найдена". Помогите? - PullRequest
27 голосов
/ 02 марта 2010

Дано:

Репозиторий_1 - источник

Хранилище_2 - место назначения

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

При загрузке из файла дампа из Репозиторий_1 / Папка1 в Репозиторий_2 / Транк все в порядке НО

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

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

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

Ответы [ 5 ]

34 голосов
/ 02 марта 2010

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

При загрузке из Репозиторий_1 / Папка1 / Подпапка (создал для этого еще один дамп) в Репозиторий_2 / Магистраль

вам нужно создать эту структуру в СВН

Repository_2 / багажник / Folder1

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

1 голос
/ 04 мая 2017

Как отмечено в , эта тема , 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, вероятно, будет работать лучше.

1 голос
/ 29 октября 2010

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

1 голос
/ 02 марта 2010

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

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

0 голосов
/ 07 марта 2017

Загрузка дампа не удалась, потому что 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.

...