Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Вопрос по CVS: перекодировка log messages   Eugene Grosbein   15 May 2006 11:27:26 
Архивное /ru.unix.bsd/260935ccfaa12.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional