<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Developing Apache Sandesha2/C</title>
</head>

<body lang="en">
<h1>Developing Apache Sandesha2/C</h1>

<p>This document provides information on how to use SVN to get an SVN
checkout/update and make commits to the source repository.</p>

<h2>Contents</h2>
<ul>
  <li><a href="#svn">Working with Subversion (SVN)</a></li>
  <li><a href="#checkout">Checking-out Sandesha2 from Subversion</a></li>
</ul>
<a name="svn"></a>

<h2>Working with Subversion (SVN)</h2>

<p>The Apache Sandesha2/C development team uses Subversion (SVN) for source
control. Subversion is a compelling replacement for CVS, developed under the
auspices of the Tigris community and is licensed under an Apache compatible
license. To learn more about Subversion or to download the latest
distribution, visit the <a href="http:///subversion.tigris.org"
target="_blank">Subversion project site</a>. If you are looking for
guidelines on setting up/installing Subversion, please read the ASF <a
href="http://www.apache.org/dev/version-control.html" target="_blank">Source
Code Repositories page</a>.</p>
<a name="checkout"></a>

<h2>Checking-out Apache Sandesha2/C from Subversion</h2>

<p>When checking out the latest version of Apache Sandesha2/C from the Apache
Foundation's Subversion repository, you must use one of the following URLs,
depending on your level of access to the Apache Sandesha2/C source code:</p>
<ul>
  <li><b>If you are not a committer:</b><a
    href="http://svn.apache.org/repos/asf/webservices/sandesha/trunk/c"
    target="_blank">http://svn.apache.org/repos/asf/webservices/sandesha/trunk/c</a></li>
  <li><b>If you are a committer:</b> <a
    href="https://svn.apache.org/repos/asf/webservices/sandesha/trunk/c"
    target="_blank">https://svn.apache.org/repos/asf/webservices/sandesha/trunk/c</a></li>
</ul>
If you are a committer, make sure that you have set your svnpasswd. To do
this you must log into svn.apache.org.  For more information, please read the
ASF <a href="http://www.apache.org/dev/version-control.html"
target="_blank">Source Code Repositories page</a>.

<p>Once you have successfully installed Subversion, you can checkout the
Sandesha2/C trunk by running the following command:</p>

<p><strong>svn co &lt;repository URL&gt; &lt;folder name&gt;</strong></p>

<p>where 'repository URL' is one of the URLs from the previous list and
'folder name' is the name of the folder into which the source code is to be
checked out.</p>
<br>


<p>To update your working copy to the latest version from the repository,
execute:</p>

<p><strong>svn update</strong></p>
<br>


<p>If you would like to submit a patch, execute:</p>

<p><strong>svn diff</strong></p>

<p>The above command will create a unified diff that can be attached to the
Apache Sandesha2/C JIRA issue tracker.</p>
<br>
</body>
</html>
