<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Sep 16, 2011 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>OpenCMIS - Source Repository</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20110916" />
    <meta http-equiv="Content-Language" content="en" />
        
  </head>
  <body class="composite">
    <div id="banner">
                  <a href="" id="bannerLeft">
                                                <img src="images/chemistry-logo.png" alt="Apache Chemistry OpenCMIS" />
                </a>
                        <a href="http://www.apache.org/" id="bannerRight">
                                                <img src="images/apache-logo.gif" alt="The Apache Software Foundation" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
        <span id="publishDate">Last Published: 2011-09-16</span>
                      </div>
            <div class="xright">        
                
                 <span id="projectVersion">Version: 0.5.0</span>
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                
                                <h5>Parent Project</h5>
                  <ul>
                  <li class="none">
                          <a href="http://www.apache.org/index.html" class="externalLink" title="The Apache Software Foundation">The Apache Software Foundation</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                                                                                                                                                                                <li class="expanded">
                          <a href="project-info.html" title="Project Information">Project Information</a>
                    <ul>
                      <li class="none">
                          <a href="index.html" title="About">About</a>
            </li>
                      <li class="none">
                          <a href="integration.html" title="Continuous Integration">Continuous Integration</a>
            </li>
                      <li class="none">
                          <a href="dependencies.html" title="Dependencies">Dependencies</a>
            </li>
                      <li class="none">
                          <a href="dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
            </li>
                      <li class="none">
                          <a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                      <li class="none">
                          <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                      <li class="none">
                          <a href="license.html" title="Project License">Project License</a>
            </li>
                      <li class="none">
                          <a href="project-summary.html" title="Project Summary">Project Summary</a>
            </li>
                      <li class="none">
                          <a href="team-list.html" title="Project Team">Project Team</a>
            </li>
                      <li class="none">
            <strong>Source Repository</strong>
          </li>
              </ul>
        </li>
                                                                                      <li class="collapsed">
                          <a href="project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                       <h5>Chemistry</h5>
                  <ul>
                  <li class="none">
                          <a href="http://chemistry.apache.org" class="externalLink" title="Main Website">Main Website</a>
            </li>
          </ul>
                                                                                                                   <a href="http://maven.apache.org/" title="Maven" class="poweredBy">
        <img class="poweredBy"  alt="Maven" src="http://maven.apache.org/images/logos/maven-feather.png"    />
      </a>
                       
                
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Overview<a name="Overview"></a></h2>This project uses <a class="externalLink" href="http://subversion.tigris.org/">Subversion</a> to manage its source code. Instructions on Subversion use can be found at <a class="externalLink" href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a>.</div><div class="section"><h2>Web Access<a name="Web_Access"></a></h2><p>The following is a link to the online source repository.</p><div class="source"><pre><a class="externalLink" href="http://svn.apache.org/viewvc/chemistry/opencmis/tags/chemistry-opencmis-0.5.0">http://svn.apache.org/viewvc/chemistry/opencmis/tags/chemistry-opencmis-0.5.0</a></pre></div></div><div class="section"><h2>Anonymous access<a name="Anonymous_access"></a></h2><p>The source can be checked out anonymously from SVN with this command:</p><div class="source"><pre>$ svn checkout http://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-0.5.0 chemistry-opencmis</pre></div></div><div class="section"><h2>Developer access<a name="Developer_access"></a></h2><p>Everyone can access the Subversion repository via HTTPS, but Committers must checkout the Subversion repository via HTTPS.</p><div class="source"><pre>$ svn checkout https://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-0.5.0 chemistry-opencmis</pre></div><p>To commit changes to the repository, execute the following command to commit your changes (svn will prompt you for your password)</p><div class="source"><pre>$ svn commit --username your-username -m &quot;A message&quot;</pre></div></div><div class="section"><h2>Access from behind a firewall<a name="Access_from_behind_a_firewall"></a></h2><p>For those users who are stuck behind a corporate firewall which is blocking http access to the Subversion repository, you can try to access it via the developer connection:</p><div class="source"><pre>$ svn checkout https://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-0.5.0-RC1 chemistry-opencmis</pre></div></div><div class="section"><h2>Access through a proxy<a name="Access_through_a_proxy"></a></h2><p>The Subversion client can go through a proxy, if you configure it to do so. First, edit your &quot;servers&quot; configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory &quot;~/.subversion&quot;. On Windows it is in &quot;%APPDATA%\Subversion&quot;. (Try &quot;echo %APPDATA%&quot;, note this is a hidden directory.)</p><p>There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.</p><p>Example : Edit the 'servers' file and add something like :</p><div class="source"><pre>[global]
http-proxy-host = your.proxy.name
http-proxy-port = 3128
</pre></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2009-2011
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
