ActiveCVS - an implementation of the Microsoft SCC API

ActiveCVS implements the Microsoft Common Source Code Control API (know variously as the SCC API or MSSCCI). For those brave souls willing to try out an early version you can download the following. Note that this version only reports status - the checkin/checkout operations are not functional.

ActiveCVS-0.3.0-build-44.exe (installation program)

A few years back I reached this same point, but the code was very unreliable. Combine a bit of an impasse with a distinct lack of free time - and I had to put this aside for a while. With a recent bit of inspiration (about SCC API calls to ignore of all things!) - and the code now seems to be completely reliable. Time to move forward.

This is the long delayed follow-on to the old CVSCC work.

Debugging

The current distributed is a "debug" build and as such generates relatively detailed logs. ActiveCVS always creates a log file in the %TEMP% directory of the form:

{module}-{time}{pid}.LOG

Where {module} is the name of the current invoking executable, {time} is the current time() value (in hex), and {pid} is the current process id (in hex).

For example:

C:\DOCUME~1\PRESTO~1.ATH\LOCALS~1\Temp>dir ActiveCVS*.log
 Volume in drive C has no label.
 Volume Serial Number is AC08-10D1

 Directory of C:\DOCUME~1\PRESTO~1.ATH\LOCALS~1\Temp

06/10/2004  02:13a              40,054 ActiveCVS-40C8262600000914.LOG
06/10/2004  02:15a                 324 ActiveCVS-40C826B0000009A8.LOG
06/10/2004  02:22a             134,167 ActiveCVS-40C826B3000007C0.LOG
06/10/2004  02:27a              55,641 ActiveCVS-40C8288300000724.LOG
06/10/2004  09:22a              39,098 ActiveCVS-40C886E7000009DC.LOG
06/10/2004  10:49a              32,508 ActiveCVS-40C89A4F0000085C.LOG
06/10/2004  10:55a              23,308 ActiveCVS-40C8A07000000958.LOG
06/10/2004  03:05p               9,637 ActiveCVS-40C8D39E00000A24.LOG
06/10/2004  06:27p                 324 ActiveCVS-40C90A7D00000320.LOG
06/10/2004  06:28p              25,241 ActiveCVS-40C90A8B000009A0.LOG
06/10/2004  06:28p                 324 ActiveCVS-40C90ACE000007F4.LOG
06/10/2004  06:30p                 324 ActiveCVS-40C90B280000042C.LOG
06/10/2004  06:30p                 324 ActiveCVS-40C90B30000006F4.LOG
06/10/2004  06:31p                 324 ActiveCVS-40C90B7F0000083C.LOG
06/10/2004  06:31p                 324 ActiveCVS-40C90B8800000324.LOG
06/10/2004  07:32p                 324 ActiveCVS-40C919B700000C04.LOG
06/10/2004  07:32p                 326 ActiveCVS-40C919BC00000848.LOG
06/10/2004  07:35p                 324 ActiveCVS-40C91A72000007C0.LOG
06/10/2004  07:35p                 326 ActiveCVS-40C91A7600000904.LOG
06/10/2004  07:41p                 324 ActiveCVS-40C91BE600000A9C.LOG
06/10/2004  07:41p                 326 ActiveCVS-40C91BE900000734.LOG
06/10/2004  07:42p                 326 ActiveCVS-40C91C3000000B0C.LOG
06/10/2004  07:57p                  57 ActiveCVS-40C91F8600000724.LOG
06/10/2004  07:59p                 324 ActiveCVS-40C92006000009DC.LOG
06/10/2004  07:59p                 326 ActiveCVS-40C9200B00000138.LOG
06/10/2004  07:59p                 324 ActiveCVS-40C9202800000AB8.LOG
06/10/2004  07:59p                 326 ActiveCVS-40C9202B000006FC.LOG
06/10/2004  08:00p                 326 ActiveCVS-40C9203F00000128.LOG
06/10/2004  08:00p                  57 ActiveCVS-40C9206600000A3C.LOG
06/10/2004  08:05p                 324 ActiveCVS-40C9219600000998.LOG
06/10/2004  08:06p                 324 ActiveCVS-40C921D200000128.LOG
06/10/2004  08:07p                 326 ActiveCVS-40C921D50000090C.LOG
06/10/2004  08:07p                 326 ActiveCVS-40C921F200000534.LOG
06/10/2004  08:10p                  57 ActiveCVS-40C922B800000BE4.LOG
06/10/2004  08:28p                 326 ActiveCVS-40C926EB00000BF0.LOG
              35 File(s)        367,621 bytes
               0 Dir(s)  90,164,338,688 bytes free

As the timestamp is appended first, log files will naturally sort into the order in which they are created. Note that the contents of the log files, while generally readable, are really meant for use by the developer. I will not be describing how to decipher the contents :).

As you can see, I have been testing...