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.