[cvsnt] : cvsgraph problems with cvsnt-style RCS file format

Markus.Gebhardt at etas.de Markus.Gebhardt at etas.de
Tue Jun 24 11:31:44 BST 2003

Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


for those of you who intend to use usernames with special characters like 
dots and also use cvsgraph (usually with viewcvs):

I ran into troubles when we used cvsnt usernames containing a dot (used 
email address names as cvs usernames for having the same usernames as in 
bugzilla) and
running viewcvs with cvsgraph.

However, these usernames are a cvsnt feature that is not compliant with 
the RCS file (*.v) definition, where
delta ::= num
        date num;
        author id;
        state ...

id is defined as ::= {num} idchar {idchar | num}*  with idchar ::=any 
visible graphic character except special (special is $ | , | , | : | ; | 
Therefore the rcs format wouldn't allow dots in usernames (=author). Cvsnt 
does allow this while using a string  ::= @{any character with @ doubled 
instead of an id for the author, thus "escaping" the author name 
containing special characters with "@"

Using cvsgraph within Viewcvs fails as cvsgraph since cvsgraph expects an 
id as the author, not a string. Using the rcsdiff that comes with cvsnt 
doesn't help, since
cvsgraph uses flex and yacc for parsing the *,v files in the repository.
Therefore I applied a little patch to make cvsgraph working with the cvsnt 
styl rcs files.  After extracting the sources (cvsgraph-1.4.0.tar.gz) 
there is the yacc-file rcsy.y that defines
the expected author type in the delta section of the *,v files of the 

delta   : tREV
          tDATE tREV ';'
          tAUTHOR { set_id(); } tID ';'
          tSTATE  { set_id(); } oid ';'
          tBRANCHES orevs ';'
          tNEXT orev ';'
          ophrases                      { $$ = new_delta($1, $3, $7, $11, 
$14, $17); }

By changing 
          tAUTHOR { set_id(); } tID ';'
          tAUTHOR { set_skipstr(); } tSTRING ';'

cvsgraph accepts a string instead of an id as author.
Just compile and replace the executable cvsgraph. - I haven't found any 
side effects so far.
I did this on a linux machine, but it should work on any other OS.

Maybe this comes in handy for someone...

Mit freundlichen Grüßen / with regards

Markus Gebhardt

Borsigstrasse 14
D-70469 Stuttgart
Tel. +49 (0)711 89661 278
markus.gebhardt at etas.de

More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook