OVERVIEW -------- The cvs DCOP service consists of the following three parts: 1. CvsService - The main interface to the functionality of the cvs command line client. There is one method for each cvs command, e.g. add, checkout, commit, etc... The methods assemble the command line arguments, create a CvsJob and return a DCOPRef object for it to the caller. There is one instance of this service for each application instance. 2. Repository - This DCOPObject manages the configuration data of the current cvs repository. The data is automatically updated when other service instances change it. 3. CvsJob - This class represents a cvs job. You can execute and cancel it, and you can retrieve the output of the cvs client by either connecting to the proper DCOP Q_SIGNALS or by using the output() method. There are two types of jobs. First the non-concurrent job which has to run alone, like cvs update or import. Second the jobs which can run concurrently like cvs log or annotate. USAGE ----- How-to use this service in C++ applications: // start DCOP service QString error; QCString appId; KApplication::startServiceByDesktopName("cvsservice", QStringList(), &error, &appId); // create stub for repository Repository_stub repository(appId, "CvsRepository"); // set directory of working copy repository.setWorkingCopy("/home/user/kde/tdesdk/cervisia"); // create stub for service CvsService_stub cvsService(appId, "CvsService"); // call "cvs log" for cervisiapart.h DCOPRef job = cvsService.log("cervisiapart.h"); // connect to Q_SIGNALS to get output connectDCOPSignal(job.app(), job.obj(), "jobExited(bool, int)", [MY SLOT]); connectDCOPSignal(job.app(), job.obj(), "receivedStdout(QString)", [MY SLOT]); // execute the cvs command job.execute(); How-to use this service in a shell script: #!/bin/sh # start DCOP service APP=`dcopstart cvsservice` # set directory of working copy dcop $APP CvsRepository setWorkingCopy /home/user/kde/tdesdk/cervisia # call "cvs log" for cervisiapart.h JOB=`dcop $APP CvsService log cervisiapart.h` # execute the cvs command dcop $JOB execute # print the output on stdout dcop $JOB output # stop DCOP service dcop $APP CvsService quit How-to use this service in a javascript: #!/usr/bin/env kjscmd var client = new DCOPClient(this); if ( client.attach() ) { // start DCOP service var appID = client.dcopStart("cvsservice"); // set directory of working copy client.send(appID, "CvsRepository", "setWorkingCopy(QString)", "/home/user/kde/tdesdk/cervisia"); // call "cvs log" for cervisiapart.h var job = client.call(appID, "CvsService", "log(QString)", "cervisiapart.h"); // execute the cvs command job.call("execute()"); // wait for job to finish while( job.call("isRunning()") ); // print the output on stdout var output = job.call("output()"); println(output); // stop DCOP service client.send(appID, "CvsService", "quit()"); }