Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: cvs log date format


  • Subject: Re: lug-bg: cvs log date format
  • From: George Danchev <danchev@xxxxxxxxx>
  • Date: Wed, 1 Sep 2004 14:08:54 +0300

On Tuesday 31 August 2004 10:40, Peter Pentchev wrote:
[snip]
> > revision 1.1
> > date: 2004-08-29 16:17:57 +0000;  author: danchev;  state: Exp;
> >
> > Мда, последния ред е формата на датата. Та какви видове имаме и как се
> > контролира той от файловете в CVSROOT/
>
> Хмм.. бърз въпрос: cvs --version какво ще покаже?

Concurrent Versions System (CVS) 1.12.9 (client/server)
това е дебианския пакет cvs 1.12.9-4 (4 е версията на пакета, 1.12.9 е 
stock/upstream version) . Зипнатата дир след apt-get source cvs
http://danchev.fccf.net/files/debian/badcvs.tar.bz2 (ще се ориентираш;-)

> Върху самия формат на датата така, както излиза в изхода от 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);

мда наистина не го бях ровил, въпреки, че е за 5 сек. грепване ;-)
Само, че в 1.11.17 горното е в cvs_output() , а в 1.12.x е в 
cvs_output_tagged() ... 

    cvs_output ("\n", 1);

    cvs_output_tagged ("text", "date: ");
    (void)sscanf (ver->date, SDATEFORM, &year, &mon, &mday, &hour, &min,
    &sec);
    if (year < 1900)
 year += 1900;
    sprintf (buf, "%04d-%02d-%02d %02d:%02d:%02d +0000", year, mon, mday,
      hour, min, sec);
    cvs_output_tagged ("date", buf);

където наистина се форматира с тирета sprintf(), които аз насляпо замених 
с / ... но никакъв резултат ;-) ... Осетих се, че вместо SDATEFORM треа се 
използва старото DATEFORM и достигнахме до ;-)

date: 1920/134540069/135111584 135176192:17:-1073744676 +0000;  author: 
danchev;  state: Exp;  lines: +0 -0
след което при клиента cvs log:
cvs log: Can't parse date/time: `1920/134540069/135111584 
135176192:17:-1073745380 +0000'.

;-) имаме слашове, но треа го видя пак що така форматира, като, че ли излезе 
не много тривиално както очаквах... пък и нямам време, но ще го зборя тия 
дни.

Освен това имаме и rcs2log скрипт който явно влияе на формата на датата, но 
незнам точно кога cvs го вика..., даже в горния дебиан пакет има и пач за 
него, да се справя с новия формат... Но и него редактирах да не плюва -, 
а / , но не ... - си знае и това е ;-)

> Сега... има друг момент, който може би е точно това, с което се
> сблъскваш.  Стандартният CVS може да извежда датата само в
> един-единствен формат - с наклонена черта като разделител между година,
> месец и ден.  В това, което ти си paste-нал горе, за разделител се
> използва тире... ти да не би да ползваш FreeBSD, а? :)  Защото
> Dag-Erling Smoerdgrav преди известно време добави във FreeBSD-ския CVS
> една опцийка iso8601, която кара сървъра (или клиента, ако работи върху
> локално хранилище) да извежда датите точно така - с тирета между година,
> месец, ден.  Дори и да не ползваш FreeBSD, а примерно Debian или някаква
> такава щуротия (:P), провери дали и при теб няма такава някаква опция и
> дали тя пък не е случайно включена - при FreeBSD тази опция се слага във
> файла CVSROOT/options в хранилището.

Точно такова нещо чувствах, че трябва да съществува и при все, че съм виждал 
доста cvs repo-та не го знаех и намирах в моите докс... Нямам и 
CVSROOT/options, но наистина с подобна опция е правилния начин да се 
контролира форматирането на датата, а не твърдо закодиран формат и 
насилствено минаване към новия, щото една камара софтуер може да разчита на 
стария формат. Според мен FreeBSD port maintainer/commiter-a е добре да 
предложи тази промяна в stock/upstream кода на CVS.

> Може би statcvs е "свикнало" да работи със стандартния формат, при който
> разделителят е наклонена черта; ако е така, не би трябвало да бъде много
> трудно пък да го обучиш да работи и с дати, форматирани според ISO 8601,
> но първо провери дали не можеш да убедиш CVS-а си да се държи "нормално"
> (макар че май за мен вече "нормално" е ISO 8601, но знае ли човек...)

Мда видях и Велентин Вълчев също предлага заместник на statcvs с тривиална 
поправка, но по-ми харесва да се оправи cvs да контролирам формата на датата 
от CVSROOT/options... пък теа жава парсери може да ги опитаме по-късно, и има 
кой да ги научи да парсват и двата формата.

Друго бързо решение е да опитам стара версия на cvs 1.11.x debian stable, 
която е със sec fixes...  или да спретнеме един дебиански пакет със cvs 
sources от FreeBSD... или пача за options ако го намеря отделно ще е 
най-добре ... Тези дни ще се заема... 10x

-- 
pub 4096R/0E4BD0AB  2003-03-18  <keyserver.bu.edu ; pgp.mit.edu>
fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB 
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.