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

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

Фон

Я занимаюсь обслуживанием модуля с открытым исходным кодом, который хранится в большом (более 10 000 ревизий) репозитории 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

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

Любые идеи?

Например:

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

person Hamish    schedule 15.01.2011    source источник


Ответы (3)


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

person ismail    schedule 15.01.2011

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

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

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

person Yaoer    schedule 11.10.2012

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

Пример с ревизией 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

person user672539    schedule 23.03.2011
comment
Спасибо за ответ, к сожалению, как указано в вопросе, я не могу изменить свойство журнала (нет доступа к фиксации). - person Hamish; 23.03.2011