Синхронизировать репозиторий SVN (svnsync) с ошибками кодирования

Можно ли исправить / обойти записи svn: log не в кодировке UTF8 при синхронизации репозиториев с svnsync?

Фон

Я нахожусь в процессе обслуживания модуля с открытым исходным кодом, который хранится в большом (более 10000 ревизий) хранилище Subversion (1.5.5). У меня нет доступа администратора к удаленному репозиторию для выгрузки / фильтрации / загрузки модуля. Старый репозиторий закрыт, и я пытаюсь синхронизировать исходный субмодуль с моим локальным (1.6+) репозиторием с помощью svnsync. Например:

svnsync file://home/svn/temp-repo/ http://path.to.repo/modulename/

Проблема в том, что старый репозиторий не применял кодировку UTF8, и я получаю сообщения об ошибках вроде:

svnsync: Cannot accept 'svn:log' property because it is not encoded in UTF-8

Я не могу изменить свойство log в исходном репозитории, поэтому мне нужно как-то изменить или игнорировать значение свойства, когда кодировка неизвестна / недействительна.

Есть идеи?

Например:

  • может pre-revprop-change Скрипт изменить свойство журнала в пути?
  • Мне сказали, что git-svn может справиться с этим, но используя промежуточное репозиторий git - как именно это делается?
  • Можно ли вообще игнорировать свойства журнала или для определенных ревизий?

3 ответа

Решение

Вам нужно будет дождаться следующей версии Subversion, есть ожидающий патч для добавления поддержки кодировок не-UTF8 в svnsync,

Вам нужно изменить pre-revprop-change.tmpl

# cp pre-revprop-change.tmpl pre-revprop-change.tmp
# vim pre-revprop-change.tmp
exit 1 ==> exit 0

В противном случае вы можете использовать svnadmin setrevprop изменить репо

Это легко исправить. Измените запись журнала в исходном хранилище с помощью следующих операторов:

Пример с ревизией 10281 и хранилищем в /home/svn/repos

svn proplist -v --revprop -r 10281 file:///home/svn/repos | iconv --to-code UTF8//IGNORE -o /tmp/iconv.out

svn propset svn:log --revprop -r 10281 -F /tmp/iconv.out file:///home/svn/repos

Другие вопросы по тегам