CvsNT API implemented in shared library

Guy Rouillier <[email protected]> Sun, 26 Nov 2006 19:25:34 -0500
Newsgroups gmane.comp.version-control.cvs.gui.devel
Message-ID <[email protected]>
--HnMHTntJngHo4OAHVyzTqjL0nvC0XlqRkGj00Dz
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

While setting up a new Linux instance in a virtual machine, I downloaded
the latest stable CvsNT version.  While building, I noticed a new
subdirectory called "cvsapi" and investigated.  At the bottom of this
email is an exchange I had on the CvsNT Dev mailing list.  I haven't had
a chance yet to read the code Arthur pointed me to, but I thought others
on this list might find this interesting. Finally, we have an
alternative to piping input and output from a separate CVS process.

I'd prefer an API implementation, assuming of course it has all the
options the command line provides.  I'd like to solicit other opinions.
 Of course, such a move would require use of CvsNT, since the old CVS
doesn't have this option.

Here's my email and a reply from the CvsNT Dev list:

Guy,

The CVSAPI provides a bunch of methods that are useful for CVS GUI clients,
including spawning CVS processes, finding CVS Servers (browse and define
servers) etc.

There is not (yet) an API for the CVS/Entries - but that will be done as a
part of the EVS project (I think) - check out the evs-dev newsgroup for
more
info on that.

The documentation is what is in the source code... If you checkout the
cvsnt
project and look in the WorkspaceViewer folder - that is a sample app that
uses most of the main features of CVSAPI...

Regards,


Arthur

"Guy Rouillier" <[email protected]> wrote in message
news:[email protected]...
> >I originally asked this on the users list, and a suggestion there was to
> >post over here.
> >
> > I work on gCvs, one of the CvsGui family of products.  We currently use
> > the cvsgui pipe implementation to provide CVS input and receive
output. I
> > noticed when building the latest cvsnt that it builds a shared cvsapi
> > library.  I couldn't locate any documentation.  Is this library
intended
> > to be a direct API replacement for the old pipe method of invoking CVS?
> > If so, that would be great!  Does any documentation exist?  Does the
API
> > provide functions to navigate the local sandbox, e.g., retrieving a
> > filtered set of CVS entries in the sandbox?  Thanks.
> >
> > --
> > Guy Rouillier



-- 
Guy Rouillier

--HnMHTntJngHo4OAHVyzTqjL0nvC0XlqRkGj00Dz
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>

<!-- Network content -->


<body style="background-color: #ffffff;">

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="width:655px; position:relative;">
  <div id="ygrp-msg" style="width: 490px; padding: 0 15px 0 0; float:left;  z-index:1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text">
            <p>While setting up a new Linux instance in a virtual machine, I downloaded<br>
the latest stable CvsNT version.  While building, I noticed a new<br>
subdirectory called &quot;cvsapi&quot; and investigated.  At the bottom of this<br>
email is an exchange I had on the CvsNT Dev mailing list.  I haven't had<br>
a chance yet to read the code Arthur pointed me to, but I thought others<br>
on this list might find this interesting. Finally, we have an<br>
alternative to piping input and output from a separate CVS process.<br>
<br>
I'd prefer an API implementation, assuming of course it has all the<br>
options the command line provides.  I'd like to solicit other opinions.<br>
 Of course, such a move would require use of CvsNT, since the old CVS<br>
doesn't have this option.<br>
<br>
Here's my email and a reply from the CvsNT Dev list:<br>
<br>
Guy,<br>
<br>
The CVSAPI provides a bunch of methods that are useful for CVS GUI clients,<br>
including spawning CVS processes, finding CVS Servers (browse and define<br>
servers) etc.<br>
<br>
There is not (yet) an API for the CVS/Entries - but that will be done as a<br>
part of the EVS project (I think) - check out the evs-dev newsgroup for<br>
more<br>
info on that.<br>
<br>
The documentation is what is in the source code... If you checkout the<br>
cvsnt<br>
project and look in the WorkspaceViewer folder - that is a sample app that<br>
uses most of the main features of CVSAPI...<br>
<br>
Regards,<br>
<br>
Arthur<br>
<br>
&quot;Guy Rouillier&quot; &lt;<a href="mailto:guyr-ml1%40burntmail.com">guyr-ml1@burntmail.<wbr>com</a>&gt; wrote in message<br>
news:<a href="mailto:mailman.238.1164500728.16616.cvsnt-dev%40cvsnt.org..">mailman.238.<wbr>1164500728.<wbr>16616.cvsnt-<wbr>dev@cvsnt.<wbr>org..</a>.<br>
&gt; &gt;I originally asked this on the users list, and a suggestion there was to<br>
&gt; &gt;post over here.<br>
&gt; &gt;<br>
&gt; &gt; I work on gCvs, one of the CvsGui family of products.  We currently use<br>
&gt; &gt; the cvsgui pipe implementation to provide CVS input and receive<br>
output. I<br>
&gt; &gt; noticed when building the latest cvsnt that it builds a shared cvsapi<br>
&gt; &gt; library.  I couldn't locate any documentation.  Is this library<br>
intended<br>
&gt; &gt; to be a direct API replacement for the old pipe method of invoking CVS?<br>
&gt; &gt; If so, that would be great!  Does any documentation exist?  Does the<br>
API<br>
&gt; &gt; provide functions to navigate the local sandbox, e.g., retrieving a<br>
&gt; &gt; filtered set of CVS entries in the sandbox?  Thanks.<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Guy Rouillier<br>
<br>
-- <br>
Guy Rouillier<br>
</p>
    </div>  

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <span width="1" style="color: white;">__._,_.___</span>
    <!-- Start the section with Message In topic -->
    <div id="ygrp-actbar">
              <span class="left">
          <a href="http://groups.yahoo.com/group/cvsgui-dev/message/1460;_ylc=X3oDMTM0bnZjZ2x0BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBG1zZ0lkAzE0NjAEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMTY0NTkwOTQ4BHRwY0lkAzE0NjA-">
            Messages in this topic          </a> (<span class="bld">1</span>)
        </span>
        <a href="http://groups.yahoo.com/group/cvsgui-dev/post;_ylc=X3oDMTJwaWo5NnU2BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBG1zZ0lkAzE0NjAEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMTY0NTkwOTQ4?act=reply&messageNum=1460">
          <span class="bld">
            Reply          </span> (via web post)
        </a>  | 
        <a href="http://groups.yahoo.com/group/cvsgui-dev/post;_ylc=X3oDMTJlZzVvZXNjBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTE2NDU5MDk0OA--" class="bld">
          Start a new topic        </a>
          </div> 
    <!-------     Start Nav Bar  ------>
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-vitnav">
                <a href="http://groups.yahoo.com/group/cvsgui-dev/messages;_ylc=X3oDMTJlY3BtODRmBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTE2NDU5MDk0OA--">Messages</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/files;_ylc=X3oDMTJmMDlpYWRuBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzExNjQ1OTA5NDg-">Files</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/photos;_ylc=X3oDMTJlc2MzMHI2BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTE2NDU5MDk0OA--">Photos</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/links;_ylc=X3oDMTJmYjlybWxwBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzExNjQ1OTA5NDg-">Links</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/database;_ylc=X3oDMTJjbmpvMXA4BF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2RiBHN0aW1lAzExNjQ1OTA5NDg-">Database</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/polls;_ylc=X3oDMTJmMTNiaW5qBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzExNjQ1OTA5NDg-">Polls</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/members;_ylc=X3oDMTJlaG8zZ2ptBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTE2NDU5MDk0OA--">Members</a>  
            |    <a href="http://groups.yahoo.com/group/cvsgui-dev/calendar;_ylc=X3oDMTJkMTBuY29vBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2NhbARzdGltZQMxMTY0NTkwOTQ4">Calendar</a>  
    </div>  
    <!-- |**|end egp html banner|**| -->

    <!-- Do not have place to put it yet -->
    <div id="ygrp-grft">
          </div>

    <!-- yahoo logo -->
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-ft">
      <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkdmI2cnBmBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMTY0NTkwOTQ4">
      <img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br>
      <a href="http://groups.yahoo.com/group/cvsgui-dev/join;_ylc=X3oDMTJmOXJhZWJvBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzExNjQ1OTA5NDg-">Change settings via the Web</a> (Yahoo! ID required) <br>
      Change settings via email: <a href="mailto:[email protected]?subject=Email Delivery: Digest">Switch delivery to Daily Digest</a> | <a href = "mailto:[email protected]?subject=Change Delivery Format: Traditional">Switch format to Traditional</a> <br>

      <a href="http://groups.yahoo.com/group/cvsgui-dev;_ylc=X3oDMTJka3J0MnVmBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMTY0NTkwOTQ4">
        Visit Your Group 
      </a> |
      <a href="http://docs.yahoo.com/info/terms/">
        Yahoo! Groups Terms of Use      </a> |
      <a href="mailto:[email protected]?subject=">
        Unsubscribe      </a> 
    </div>     <!-- |**|end egp html banner|**| -->
  </div> <!-- ygrp-msg -->

  
  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:140px;float: left; clear: none; margin-left: 5px; background:white; margin-bottom:25px ;position:absolute; top:0; right: 0;">
    <!-- Network content -->
    
    <!-- Start vitality -->
    <div id="ygrp-vital">
            <a href="http://groups.yahoo.com/group/cvsgui-dev;_ylc=X3oDMTJlMWlqamVsBF9TAzk3MzU5NzE0BGdycElkAzI0OTMyNDUEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE2NDU5MDk0OA--">
        Visit Your Group      </a>
    </div> 
                <div id="hd">SPONSORED LINKS</div>
      <div id="ov">
        <ul>
                    <li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjNGs0c2J2BF9TAzk3MzU5NzE0BF9wAzEEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjQ1OTA5NDg-?t=ms&k=Software+development+services&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=7x2qo6dMYy1p5AU1pt1tiQ">Software development services</a></li>
                    <li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjaTZhZmt2BF9TAzk3MzU5NzE0BF9wAzIEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjQ1OTA5NDg-?t=ms&k=Software+development&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=BN1lrlsQSEiIXBpRBgFwvg">Software development</a></li>
                    <li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjZDI2ZzB0BF9TAzk3MzU5NzE0BF9wAzMEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjQ1OTA5NDg-?t=ms&k=Development+software&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=tCpQXu3D1f1U1uy5lsC3_g">Development software</a></li>
                    <li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjYmdhdm44BF9TAzk3MzU5NzE0BF9wAzQEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjQ1OTA5NDg-?t=ms&k=Software+development+company&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=vprGpfTz1GxuQRXlltd5Og">Software development company</a></li>
                    <li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjb3JkNmN0BF9TAzk3MzU5NzE0BF9wAzUEZ3JwSWQDMjQ5MzI0NQRncnBzcElkAzE3MDUwMDcxODEEc2VjA3NsbW9kBHN0aW1lAzExNjQ1OTA5NDg-?t=ms&k=Custom+software+development&w1=Software+development+services&w2=Software+development&w3=Development+software&w4=Software+development+company&w5=Custom+software+development&c=5&s=154&g=2&.sig=GblHBdeKJR4WCTYIwY_tYA">Custom software development</a></li>
                  </ul>
      </div>
    
    <!-- Network content -->
                <div id="nc">
              <div class="ad">
                      <div id="hd1">Yahoo! Mail</div> 
<p><a href="http://us.ard.yahoo.com/SIG=12h7rldge/M=493064.8985657.9760727.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1164598148/A=3848569/R=0/SIG=12jcbehhh/*http://us.rd.yahoo.com/evt=42410/*http://advision.webevents.yahoo.com/handraisers">You're invited!</a></p> 
<p>Try the all-new</p> 
<p>Yahoo! Mail Beta</p>                  </div>
                    <div class="ad">
                      <div id="hd1">Y! Messenger</div> 
<p><a href="http://us.ard.yahoo.com/SIG=12hien0gm/M=493064.8985659.9760753.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1164598148/A=3848586/R=0/SIG=12dds2hov/*http://us.rd.yahoo.com/evt=42403/*http://messenger.yahoo.com/feat_voice.php">PC-to-PC calls</a></p> 
<p>Call your friends</p> 
<p>worldwide - free!</p>                  </div>
                    <div class="ad">
                      <div id="hd1">New business?</div> 
<p><a href="http://us.ard.yahoo.com/SIG=12hm53crm/M=493064.8985663.9760769.8674578/D=groups/S=1705007181:NC/Y=YAHOO/EXP=1164598148/A=3848640/R=0/SIG=131an6mds/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2002&cmp=Yahoo&ctv=Groups1&s=Y&s2=&s3=&b=50">Get new customers.</a></p> 
<p>List your web site</p> 
<p>in Yahoo! Search.</p>                  </div>
          </div>
      
  </div>   <!-- |**|end egp html banner|**| -->
  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=2493245/grpspId=1705007181/msgId=1460/stime=1164590948/nc1=3848569/nc2=3848586/nc3=3848640" width="1" height="1"> <br>
<span  style="color: white;">__,_._,___</span>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mlmsg {font-size:13px; font-family: arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;*font-size:100%;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
    font-family: Georgia;	
}
#ygrp-text p{
    margin: 0 0 1em 0;
}
#ygrp-tpmsgs{
    font-family: Arial;	
    clear: both;
}
#ygrp-vitnav{
	padding-top: 10px;
	font-family: Verdana;
	font-size: 77%;
	margin: 0;
}
#ygrp-vitnav a{
	padding: 0 1px;
}
#ygrp-actbar{
	clear: both;
	margin: 25px 0;
	white-space:nowrap;
	color: #666;
	text-align: right;
}
#ygrp-actbar .left{
	float: left;
	white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
	font-family: Verdana;
	font-size: 77%;
	padding: 15px 0;
}
#ygrp-ft{
  font-family: verdana;
  font-size: 77%;
  border-top: 1px solid #666; 
  padding: 5px 0; 
}
#ygrp-mlmsg #logo{
  padding-bottom: 10px;
}

#ygrp-vital{
	background-color: #e0ecee;
	margin-bottom: 20px;
	padding: 2px 0 8px 8px;
}
#ygrp-vital #vithd{
	font-size: 77%;
	font-family: Verdana;
	font-weight: bold;
	color: #333;
	text-transform: uppercase;
}
#ygrp-vital ul{
	padding: 0;
	margin: 2px 0;
}
#ygrp-vital ul li{
  list-style-type: none;
  clear: both;
  border: 1px solid #e0ecee;  
}
#ygrp-vital ul li .ct{
  font-weight: bold;
  color: #ff7900;
  float: right;
  width: 2em;
  text-align:right;
  padding-right: .5em;
}
#ygrp-vital ul li .cat{
  font-weight: bold;
}
#ygrp-vital a {
	text-decoration: none;
}

#ygrp-vital a:hover{
  text-decoration: underline;
}

#ygrp-sponsor #hd{
	color: #999;
	font-size: 77%;
}
#ygrp-sponsor #ov{
	padding: 6px 13px;
	background-color: #e0ecee;
	margin-bottom: 20px;
}
#ygrp-sponsor #ov ul{
	padding: 0 0 0 8px;
	margin: 0;
}
#ygrp-sponsor #ov li{
	list-style-type: square;
	padding: 6px 0;
	font-size: 77%;
}
#ygrp-sponsor #ov li a{
	text-decoration: none;
	font-size: 130%;
}
#ygrp-sponsor #nc {
  background-color: #eee;
  margin-bottom: 20px;
  padding: 0 8px;
}
#ygrp-sponsor .ad{
	padding: 8px 0;
}
#ygrp-sponsor .ad #hd1{
	font-family: Arial;
	font-weight: bold;
	color: #628c2a;
	font-size: 100%;
	line-height: 122%;
}
#ygrp-sponsor .ad a{
	text-decoration: none;
}
#ygrp-sponsor .ad a:hover{
	text-decoration: underline;
}
#ygrp-sponsor .ad p{
	margin: 0;
}
o {font-size: 0; }
.MsoNormal {
   margin: 0 0 0 0;
}
#ygrp-text tt{
  font-size: 120%;
}
blockquote{margin: 0 0 0 4px;}
.replbq {margin:4}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html><!--End group email -->


--HnMHTntJngHo4OAHVyzTqjL0nvC0XlqRkGj00Dz--