Подтвердить что ты не робот

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

Дано:

Repository_1 - источник

Repository_2 - destination

Я создал файл дампа 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'

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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