Сбой svndumpfilter с ошибкой «Неверный путь к исходной копии ...» - PullRequest
13 голосов
/ 13 февраля 2012

Я хочу переместить часть своего 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.

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

Ответы [ 3 ]

17 голосов
/ 05 марта 2014

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

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

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

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

15 голосов
/ 22 ноября 2012

В какой-то момент /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 голосов
/ 30 октября 2017

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

...