Re: lug-bg: cvs log date format
- Subject: Re: lug-bg: cvs log date format
- From: Peter Pentchev <roam@xxxxxxxxxxx>
- Date: Tue, 31 Aug 2004 10:40:47 +0300
On Mon, Aug 30, 2004 at 10:12:40PM +0300, George Danchev wrote:
> Здравейте,
> имаме сървър със cvs repo от което при клиента вадиме лог инфо със cvs log.
> Обаче се оказва, че statcvs не му харесва date format и ето какво ми крещи:
> StatCvs - CVS statistics generation
> Logfile parsing failed.
> unexpected date format in line 17
>
> Ето и част от лог-а с формата на датата:
> #head -n17 LOG
[snip]
> revision 1.1
> date: 2004-08-29 16:17:57 +0000; author: danchev; state: Exp;
>
> Мда, последния ред е формата на датата. Та какви видове имаме и как се
> контролира той от файловете в CVSROOT/
Хмм.. бърз въпрос: cvs --version какво ще покаже?
Върху самия формат на датата така, както излиза в изхода от cvs log,
нямаш много контрол. Ако разглеждаш stock CVS sources така, както идват
от cvshome.org, мисля, че нямаш никакъв контрол, поне не и във версия
1.11.17. От файла src/log.c, редове около 1611:
sprintf (buf, "%04d/%02d/%02d %02d:%02d:%02d", year, mon, mday,
hour, min, sec);
cvs_output (buf, 0);
Сега... има друг момент, който може би е точно това, с което се
сблъскваш. Стандартният CVS може да извежда датата само в
един-единствен формат - с наклонена черта като разделител между година,
месец и ден. В това, което ти си paste-нал горе, за разделител се
използва тире... ти да не би да ползваш FreeBSD, а? :) Защото
Dag-Erling Smoerdgrav преди известно време добави във FreeBSD-ския CVS
една опцийка iso8601, която кара сървъра (или клиента, ако работи върху
локално хранилище) да извежда датите точно така - с тирета между година,
месец, ден. Дори и да не ползваш FreeBSD, а примерно Debian или някаква
такава щуротия (:P), провери дали и при теб няма такава някаква опция и
дали тя пък не е случайно включена - при FreeBSD тази опция се слага във
файла CVSROOT/options в хранилището.
Може би statcvs е "свикнало" да работи със стандартния формат, при който
разделителят е наклонена черта; ако е така, не би трябвало да бъде много
трудно пък да го обучиш да работи и с дати, форматирани според ISO 8601,
но първо провери дали не можеш да убедиш CVS-а си да се държи "нормално"
(макар че май за мен вече "нормално" е ISO 8601, но знае ли човек...)
> Проблема не е в statcvs или JRE-то при клиента, те си работят срещу други
> хранилища от които е изваден лог с date format като този:
> date: 2001/10/21 12:18:45; author: awi; state: Exp; lines: +1 -1
>
> Да де сега ясно е, че statcvs е за бой (хак, ама жава не разбираме ;-), че не
> може да парсва date: 2004-08-29 16:17:57, а иска да са във формат date:
> 2001/10/21 12:18:45, но въпроса е как да му докарам разбираемия за него
> формат (със слашове, вместо дашове), т.е. какво се сетва в CVSROOT/ на
> сървъра, че да се удоволетвори това изискване. Благодаря.
А, не чета, ти и сам си стигнал до тоя извод :) Та.. провери дали в
CVSROOT/options няма iso8601 или нещо такова, или погледни
докиментацията на твоята версия на CVS...
Поздрави,
Петър
--
Peter Pentchev roam@xxxxxxxxxxx roam@xxxxxxxx roam@xxxxxxxxxxx
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
This sentence is false.
Attachment:
pgpPdhiSLTdAp.pgp
Description: PGP signature
|