Messing with PECL::cvsclient

    Harry Fuecks

    Just for the sake of interest, been having a hack with Sara Golemon’s cvsclient extension. Being able to access CVS over HTTP (perhaps for a HTML forms interface for updates or exposing with XML-RPC / SOAP) is a very worthwhile aim IMO.

    Note that cvsclient is beta (0.2) with only limited functionality so far, for reading a repository and examining the logs for a given file. There’s also next to zero documentation apart from the source.

    If you’re running Linux and have the PEAR package manager set up, installing cvsclient as a shared library only requires type “pear install cvsclient-beta” then adding the .so file to your php.ini as an extension. If you’re on Windows… you probably need to beg the owner of this site.

    Was able to connect to the WACT CVS repository at Sourceforge like;

    $cvs_server = '';
    $cvs_root = '/cvsroot/wact';
    if ( !$cvs = cvsclient_connect($cvs_server,$cvs_root) ) {
    die('Could not connect');
    echo "Connected to servern";

    $cvs_user = 'anonymous';
    $cvs_pass = '';
    if ( !cvsclient_login($cvs,$cvs_user,$cvs_pass) ) {
    die ('Could not login');
    echo "Logged inn";

    Two further functions are exposed to PHP, cvsclient_retrieve() and cvsclient_log(), the former seeming to iterate of the contents of directory in CVS while the latter can be used to fetch the log for a single file e.g.;

    $module = 'wact';
    $path = '.';
    while ($file = cvsclient_retrieve($cvs,$module,$path) ) {
    echo $file;


    $file = 'README';
    print_r (cvsclient_log($cvs,$module,$file));

    Wasn’t able to access directories below the root of the WACT module – whether that’s my fault or a limitation in the current version, I’m not sure. Also there doesn’t seem to be a way to get the filename from cvsclient_retrieve() but. again, I may have missed the point.

    Anyway – although it’s not something to put into production right now, it’s definately worth keeping an eye on. Wish the author good luck with it.