[mdk-re] CVS commit & script from loginfo

cornet =?iso-8859-1?q?cornet_=CE=C1_zmail=2Eru?=
Ср Сен 5 23:25:00 MSD 2001


Hello all!!

Подозреваю, что в данной рассылке куча знатоков CVS, уж по
крайней мере разработчики из Alt точно знают многое, не
отпирайтесь :-))

Задача:
Есть CVS, CVSROOT=/home/user/cvs
в ём есть каталог $CVSROOT/doc в котором содержится
документация в html. Люди ходят туда через pserver.
Хочется что бы по каждому commit в этот модуль, стартовал
скриптик, который все это будет через cvs update локально
вытягивать и складывать в доступное http серверу место
(/home/user/www), предварительно протралив, подправив в
соответствии с произошедшими изменениями индексы, заголовки,
атрибуты и прочую хренотень, поскольку в самом CVS хранится
практически голое <body> а обвеска должна браться из 
темплейта и частично генериться налету.

Что у меня получилось:
$CVSROOT/CVSROOT/loginfo содержит строку:
^doc (date; cat; (sleep 2; cd /home/user/www;
/home/user/bin/script.pl) &) >> $CVSROOT/CVSROOT/updatelog 2>&1

/home/user/bin/script.pl - содержит вызов cvs update и
обрабатывает файлы.

Однако у такого подхода есть неприятность:
Если по commit фиксируется не один файл а несколько (cvs commit
doc), причем в различных подкаталогах $CVSROOT/doc , то
вышеприведенная строка будет вызвана столько раз, сколько
каталогов обработано, причем практически одновременно, что
недопустимо, поскольку копии скрипта неизбежно перессорятся между
собой из за файлов. К тому же, пока эти скрипты не отработают,
CVS не отпускает консоль клиента и считает операцию commit не
завершенной, что как то странно и неудобно.

Хачу:
Что бы если пользователь сказал _один_ раз
cvs commit doc
то независимо от количества и места расположения фиксируемых
файлов, после их фиксации был бы _один_ раз вызван мой скрипт, и
желательно как только скрипт запустится консоль клиента
отпустить.

Как?

-- 
******** FIRE & STEEL ********





Подробная информация о списке рассылки community