[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