Извлечение проектов в их собственный репозиторий в SVN с использованием svndumpfilter2 (ошибка утверждения Python) - PullRequest
2 голосов
/ 24 июня 2010

Я пытаюсь перенести проект из одного репозитория в собственный репозиторий, чтобы упростить обработку аутентификации / авторизации через ldap. Тем не менее, при попытке свалить свадмин | svndumpfilter --include ... Я получаю стандартную ошибку, что некоторые файлы во включенном пути были перемещены или скопированы откуда-то НЕ во включенном пути, и поэтому содержимое недоступно.

Google говорит мне, что мне нужно использовать один из вариантов скрипта Python svndumpfilter. У меня есть Python 2.6.5 на Windows Server 2003, доступный через командную строку. Все три этих сценария используют стандартный ввод, но каждый из них обрабатывает вещи немного по-своему. svndumpfilter2 запускается, но в Revision 2 дросселирует с ошибкой подтверждения. Код, очевидно, ожидает, что двоеточие будет в этой строке, а его нет. Файл дампа, который я использую, является простым svnadmin dump repo> out.dump. С этим ничего не сделано.

Я использую следующие команды: свадмин свалки D: \ svn \ repo | C: \ Python26 \ python.exe "C: \ Program Files \ CollabNet \ Subversion Server \ svndumpfilter2.py" http: // localhost / svn / repo include Project> D: \ svndump \ project.dump

OR

дамп svnadmin D: \ svn \ repo> out.dump

введите out.dump | C: \ Python26 \ python.exe "C: \ Program Files \ CollabNet \ Subversion Server \ svndumpfilter2.py" http: // localhost / svn / repo include Project> D: \ svndump \ project.dump

Вывод, который я получаю:

  • Сброс ревизии 0.
  • Дампированная версия 1. C: \ Program Files \ CollabNet \ Subversion
  • Сервер \ svndumpfilter2.py: 67:
  • УстареваниеWa rning: модуль md5 осуждается; используйте вместо этого hashlib
  • import md5 Traceback (самый последний звонок последнее): файл "C: \ Program" Файлы \ CollabNet \ Subversion Сервер \ svndumpfilter2.py ", строка 40 6,
  • в lump = read_lump (fr) Файл "C: \ Program Files \ CollabNet \ Subversion Сервер \ svndumpfilter2.py ", строка 23 9,
  • в read_lump lump = read_rfc822_headers (f) Файл "C: \ Program" Файлы \ CollabNet \ Subversion Сервер \ svndumpfilter2.py ", строка 23 1,
  • в read_rfc822_headers двоеточие assert> 0 AssertionError

Первая часть файла дампа, в котором происходит сбой:

SVN-fs-dump-format-version: 2

UUID: 880c8176-308d-ea4f-8680-45defe5ec145

Номер редакции: 0 Prop-content-length: 56 Контент-длина: 56

К 8 свн: дата V 27 2007-01-30T21: 25: 29.487250Z PROPS-END

Номер редакции: 1 Prop-content-length: 151 Длина контента: 151

K 7 svn: log V 40 Папки добавлены в разрешить правильное ветвление. К 10 svn: автор V 15 КОМПАНИЯ \ ПОЛЬЗОВАТЕЛЬ K 8 свн: дата V 27 2007-02-02T21: 02: 22.321625Z PROPS-END

Node-path: branch Node-kind: dir Действие узла: добавьте Prop-content-length: 10 Контент-длина: 10

PROPS-END

Node-path: tags Тип узла: dir Действие узла: добавьте Prop-content-length: 10 Контент-длина: 10

PROPS-END

Node-path: trunk Тип узла: dir Действие узла: добавьте Prop-content-length: 10 Контент-длина: 10

PROPS-END

Номер редакции: 2 Prop-content-length: 109 Контент-длина: 109

Кто-нибудь видел это раньше или есть идеи, почему это происходит?

1 Ответ

3 голосов
/ 02 июня 2011

Эта ошибка может возникать из-за того, что Python-on-Windows выполняет преобразования новой строки (обрабатывая stdin как текстовый файл).

Поскольку "svnadmin dump" создает файл дампа, используя соглашение о переводе строки Unix (даже при запуске в Windows), вам не нужно, чтобы python выполнял преобразования новой строки. Решение состоит в том, чтобы вызвать python с опцией "-u".

Кроме того, первый аргумент svndumpfilter2.py должен быть локальным REPOS_PATH, а не строкой http: //. Скажем ради обсуждения, что ваш репозиторий называется foo_bar и находится в c: \ svnrepos \ foo_bar. Допустим также, что вы уже запустили «svnadmin dump» на foo_bar и создали файл с именем out.dump

Тогда правильный вызов Python:

C: \ Python26 \ python.exe -u "C: \ Program Files \ CollabNet \ Subversion Server \ svndumpfilter2.py" c: \ svnrepos \ foo_bar Проект D: \ svndump \ project.dump

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...