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 ============================================================================
