Синхронизировать репозиторий SVN (svnsync) с ошибками кодирования - PullRequest
5 голосов
/ 16 января 2011

Можно ли исправить / обойти записи 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 - как именно это делается?
  • можно ли вообще игнорировать свойства журнала или для отдельных ревизий

Ответы [ 3 ]

2 голосов
/ 11 октября 2012

Вам необходимо изменить pre-revprop-change.tmpl

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

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

2 голосов
/ 16 января 2011

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

1 голос
/ 23 марта 2011

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

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

svn proplist -v --revprop -r 10281 file:///home/svn/repos | iconv --to-code UTF8//IGNORE -o /tmp/iconv.out</p> <p>svn propset svn:log --revprop -r 10281 -F /tmp/iconv.out file:///home/svn/repos

...