<!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 Site Renderer 1.6 at 2016-09-02 -->
<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 Bridge WAR packaging &#x2013; 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="20160902" />
    <meta http-equiv="Content-Language" content="en" />
        
        </head>
  <body class="composite">
    <div id="banner">
                                      <a href="../../opencmis.html" id="bannerLeft">
                                                <img src="../../images/chemistry-logo.png" alt="Apache Chemistry OpenCMIS" />
                </a>
                              <a href="https://www.apache.org/" id="bannerRight">
                                                <img src="../../images/apache-logo.png" alt="The Apache Software Foundation" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                    
                <div class="xleft">
        <span id="publishDate">Last Published: 2016-09-02</span>
                      </div>
            <div class="xright">        
                    
                 <span id="projectVersion">Version: 1.0.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="../../index.html" title="Apache Chemistry OpenCMIS">Apache Chemistry OpenCMIS</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="plugin-management.html" title="Plugin Management">Plugin Management</a>
            </li>
                      <li class="none">
                          <a href="distribution-management.html" title="Distribution Management">Distribution Management</a>
            </li>
                      <li class="none">
                          <a href="dependency-info.html" title="Dependency Information">Dependency Information</a>
            </li>
                      <li class="none">
            <strong>Source Repository</strong>
          </li>
                      <li class="none">
                          <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                      <li class="none">
                          <a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                      <li class="none">
                          <a href="integration.html" title="Continuous Integration">Continuous Integration</a>
            </li>
                      <li class="none">
                          <a href="plugins.html" title="Project Plugins">Project Plugins</a>
            </li>
                      <li class="none">
                          <a href="license.html" title="Project License">Project License</a>
            </li>
                      <li class="none">
                          <a href="team-list.html" title="Project Team">Project Team</a>
            </li>
                      <li class="none">
                          <a href="project-summary.html" title="Project Summary">Project Summary</a>
            </li>
                      <li class="none">
                          <a href="dependencies.html" title="Dependencies">Dependencies</a>
            </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><a name="Overview"></a>Overview</h2><a name="Overview"></a>
<p>This project uses <a class="externalLink" href="http://subversion.apache.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>.</p></div>
<div class="section">
<h2><a name="Web_Access"></a>Web Access</h2><a name="Web_Access"></a>
<p>The following is a link to the online source repository.</p>
<div class="source">
<pre><a class="externalLink" href="https://svn.apache.org/viewvc/chemistry/opencmis/tags/chemistry-opencmis-1.0.0-RC1/chemistry-opencmis-bridge/chemistry-opencmis-bridge">https://svn.apache.org/viewvc/chemistry/opencmis/tags/chemistry-opencmis-1.0.0-RC1/chemistry-opencmis-bridge/chemistry-opencmis-bridge</a></pre></div></div>
<div class="section">
<h2><a name="Anonymous_access"></a>Anonymous access</h2><a name="Anonymous_access"></a>
<p>The source can be checked out anonymously from SVN with this command:</p>
<div class="source">
<pre>$ svn checkout https://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-1.0.0-RC1/chemistry-opencmis-bridge/chemistry-opencmis-bridge chemistry-opencmis-bridge</pre></div></div>
<div class="section">
<h2><a name="Developer_access"></a>Developer access</h2><a name="Developer_access"></a>
<p>Everyone can access the Subversion repository via HTTP, 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-1.0.0-RC1/chemistry-opencmis-bridge/chemistry-opencmis-bridge chemistry-opencmis-bridge</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><a name="Access_from_behind_a_firewall"></a>Access from behind a firewall</h2><a name="Access_from_behind_a_firewall"></a>
<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-1.0.0-RC1/chemistry-opencmis-bridge/chemistry-opencmis-bridge chemistry-opencmis-bridge</pre></div></div>
<div class="section">
<h2><a name="Access_through_a_proxy"></a>Access through a proxy</h2><a name="Access_through_a_proxy"></a>
<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 file's 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&#x2013;2016
                        <a href="https://www.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.      
                    
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
