Синхронизировать репозиторий 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