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

Ошибка svndumpfilter с ошибкой "Недопустимый путь к исходному коду..."

Я хочу перенести часть моего SVN-репозитария на экземпляр AWS и следую этой странице (Обслуживание хранилища)

Я взял dump всего репо (команды Windows):

  • svnadmin dump c:\repo > all_repo

Далее следует отфильтровать его, чтобы включить только интересующий меня проект (который называется "M1" ).

  • type all_repo | svndumpfilter include M1 --drop-empty-revs > m1

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


В этом проекте он обрывается с ошибкой, указанной в заголовке этого сообщения. Точная формулировка:

svndumpfilter: Неверный путь источника копирования '/Personal/Richard/M1_Config'

Процесс пытался записать в несуществующий канал.

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

  • Как я могу правильно фильтровать всю папку M1 и ее дочерние элементы, полностью ли исключая папку Personal/Richard/M1_Config?
  • Как я могу убедиться, что экспортированный файл содержит правильную информацию, чтобы правильно воссоздать папку M1 на удаленном SVN?
4b9b3361

Ответ 1

В какой-то момент /Personal/Richard/M1_Config был скопирован путь M1. Сообщение об ошибке означает, что он не может выполнить копию, поскольку источник был отфильтрован. Проверьте версию, о которой жаловался svndumpfilter.

Вы должны указать путь /Personal/Richard/M1_Config, даже если вы не хотите его в конечном импорте. Вам также необходимо включить пути /Personal/Richard и /Personal, поскольку каждый из них находится в нем родителем. Ваша команда должна быть:

type all_repo | svndumpfilter include M1 "/Personal" --drop-empty-revs > m1 

Если у вас есть другие пути, скажите /Personal/James, которые вам не нужны, и вы хотите их исключить, вы можете запустить второй svndumpfilter, чтобы разделить их:

type m1 | svndumpfilter exclude "/Personal/James" --drop-empty-revs > m1_2

Ответ 2

Я пробовал по крайней мере 4 разных приложения для этого, единственное, что действительно работало , использовало svndumpfilterIN:

svnadmin dump c:\repo > all_repo
svndumpfilter.py all_repo --repo=c:\repo --output-dump=m1 include M1

Вот мой полный ответ на Linux.

Вот что я пробовал и не работал:

Ответ 3

Я сталкиваюсь с той же проблемой. У нас есть много удаленных перемещенных и скопированных путей в репозитории, и единственным инструментом, который действительно помог, был svndumpsanitizer Один файл C-программы, который легко может быть скомпилирован на cygwin или Linux, и он работал как очарование в инкрементальном дамп файле 170 ГБ с ~ 160 000 коммитов.