[cvsnt] CVS Server Side Reporting Tools?

Arthur Barrett arthur.barrett at march-hare.com
Sun Nov 9 23:28:44 GMT 2008


Bo,



> I looked in the structure of my CVSNT Audit database (MSSQL) and these
> columns are actually integer *numbers*:
> 
> Sessionlog.ID
> *.ID, *.SessionID

All the ID columns are automatic/sequence's that generate the primary
key for the table.  The *.SessionID columns all are foreign keys to the
primary key of SessionLog.  The SessionID itself is only stored once in
the SessionLog table.

> >
> >evs switched to guids for the session id.
> 
> Then needs a different Audit database structure.
> 

Yes - but it's out of scope for this discussion anyway.


> > Another question:
> > Is the commitid the same as the value stored into the Audit 
> > database sessionlog.sessionid column???
> 
> Yes.
> 

Well - for commits yes - but every row (and every server session) has a
session id, but only on commits are they commit id's too...



The code to make the sessionid is in cvsnt/src/main.cpp:

/**************************************************************/
static void make_session_id()
{
	
sprintf(global_session_id,"%x%08lx%04x",(int)getpid(),(long)time(NULL),r
and()&0xFFFF);
}
/**************************************************************/

For the purposes of migration if you used process id zero then you'd
always get a unique session id.

Just looking at that code it's actually a little dangerous since the
size of the getpid() is not (technically) limited in any way and yet the
maximum size of a session id is 64 characters.



Finally - CVSNT audit trigger was introduced after the commit id was
already available in CVSNT, so if any 'commit' does not have a commit id
then you can be sure that it is not already in the audit database.

Regards,


Arthur




More information about the cvsnt mailing list