|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 15 May 2006 11:27:26 To : Victor Sudakov Subject : Re: Вопрос по CVS: перекодировка log messages -------------------------------------------------------------------------------- 15 май 2006, понедельник, в 06:51 KRAST, Victor Sudakov написал(а): VS> Коллеги, VS> Есть у нас сотрудники, которым удобнее работать в локали ru_RU.CP1251 VS> или вообще из виндов. Когда они делают "cvs commit", сообщение в log VS> попадает в виндовой кодировке. VS> Hет ли какого средства автоматизировать перекодировку сообщения при VS> коммите? В CVSROOT/verifymsg: DEFAULT $CVSROOT/CVSROOT/recodelog Самописный скрипт recodelog в зависимости от $CVS_USER перекодирует (или не перекодирует). Использует iconv(1) и табличку CVSROOT/recodetable такого формата: # The comment begins with '#' # No emply lines please # # This list describes per-user conversions for commit log messages # Conversions are performed by recodelog using iconv(1). # This is intended for pserver basically as it provides CVS_USER variable. # # First column is user name (CVS_USER). # Second column is source charset (no autodetection yet). # Third column is destination charset. username windows-1251 koi8-r Сам скрипт: #!/bin/sh if [ -z "$CVS_USER" ]; then echo $0: no CVS_USER variable exit 0 fi recodetable=$CVSROOT/CVSROOT/recodetable recodehistory=/var/tmp/recodelog mkdir -p $recodehistory if [ ! -r $recodetable ]; then echo $0: no readable $recodetable exit 0 fi while read user s d do case $user in \#*) ;; $CVS_USER) if [ `find $recodehistory -name $user -mtime -3s | wc -l` -gt 0 ] then echo `date`: SKIPPED "$@": `cat $1`: $(ls -lT `find $recodehistory -name $user -mtime -3s`) >>$recodehistory/SKIP exit 0 fi echo `date`: "$@": `cat $1` >>$recodehistory/$CVS_USER || true iconv=/usr/local/bin/iconv if [ -x $iconv ]; then bname=`basename $1` tempfile=`mktemp -t $bname` && \ $iconv -f "$s" -t "$d" $1 >$tempfile && \ mv $tempfile $1 || exit 1 else echo $0: need runnable $iconv fi exit 0 ;; esac done <$recodetable Eugene -- Прекрасны тонко отшлифованная драгоценность; победитель, раненный в бою; слон во время течки; река, высыхающая зимой; луна на исходе; юная женщина, изнуренная наслаждением, и даятель, отдавший все нищим. (Дхарма) --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/260935ccfaa12.html, оценка из 5, голосов 10
|