понедельник, 26 ноября 2007 г.

Проблема кодировок в post-commit svn

Возникла в нашей команде задача оповещения о чужих коммитах. Для командного общения активно используем гугловскую группу, поэтому идущий в поставке svn механизм рассылки пост-коммитов подходил на 100%.

Но сходу механизм не заработал - письма, при запуске скрипта самим svn не приходили, а при отладочных запусках из консоли - приходили, но со слетевшей, в utf, кодировкой(svnlook выдавал русские комvентарии в консоль юникодом).

Вторая проблема решилась небольшим переписыванием скрипта commit-email.pl:
установкой нужной локали
$ENV{'LC_ALL'} = 'russian';
и заданием нужной кодировки в хидерах писем(было UTF-8)
push(@head, "Content-Type: text/plain; charset=koi8-r\n");

Первая - добавил в post-commit скрипт переход в каталог, в котором он сам и расположен

REPOS="$1"
REV="$2"
cd /home/.../hooks/
/home/.../hooks/commit-email.pl "$REPOS" "$REV" "plaincad-dev@googlegroups.com" --diff n >1 2>2

суббота, 10 ноября 2007 г.

Рестор БД под 2.1 с гранатами для non-ascii пользователей

Натолкнулся на неприятную особенность - из-за некорретной работы с unicode версий ФБ менее 2.1, при ресторе БД, в которой даны какие-то права пользователям, имя которого содержит, к примеру, русские символы, рестор останавливается:

gbak: restoring privilege for user ДЕНИС
gbak: ERROR:arithmetic exception, numeric overflow, or string truncation
gbak: ERROR: Cannot transliterate character between character sets
gbak: ERROR: At trigger 'RDB$TRIGGER_9'
gbak:Exiting before completion due to errors

Ситуация конечно редкая, для заведения таких прав до версии 2.1 нужна недюжинная фантазия.

Если такой грант давать в 2.1 - то все работает штатно.