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

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
          
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

                                                    <meta name="author" content="
			Sebastian Wagner
		">
            <meta name="email" content="sebawagner@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings - Source Code</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
		
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
			
			<!-- Add colorbox plugin -->
			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
		
			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
			
			<script type="text/javascript">
				$(function() {
					$("#accordion").accordion({
						heightStyle: 'content',
						icons: false
					});
					var idx = location.href.lastIndexOf('/');
					if (idx > -1) {
						var url = '.' + location.href.substring(idx);
						var a = $('#accordion a[href="' + url + '"]');
						a.addClass('active');
						var id = a.parent()[0].id;
						var idx1 = id.lastIndexOf('-');
						if (idx1 > -1) {
							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
						} 
					}
					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
				});
			</script>
			
			<style type="text/css">
				.fancybox-custom .fancybox-outer {
					box-shadow: 0 0 50px #222;
				}
			</style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
        	<div class="mainbody" style="min-width: 960px; width: 94%;">
        	<div class="superbody" style="width: 100%;">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    <td width="80%" align="right" valign="top" >
	<a href="demo.html">Demo</a>
	<span>|</span> 
	<a href="downloads.html" target="_PARENT">Download</a>
	<span>|</span> 
	<a href="installation.html" target="_PARENT">Installation</a>
	<span>|</span> 
	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
	<span>&nbsp;</span>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="nowrap">

                    <!-- special ACon Logo - leave here for next time
                    <a href="http://apachecon.com/2005/US/">
                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
                             width="125" border="0" alt="ApacheCon US 2005" />
                    </a>  -->

                   <!-- regular menu -->

                    
    <!-- ============================================================ -->
    <div id="accordion" style="width: 100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div>
	        	            	            	    <a href="./index.html">Home</a>
<br/>
	        		        	            	            	    <a href="./license.html">License</a>
<br/>
	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
<br/>
	        		        	            	            	    <a href="./downloads.html">Downloads</a>
<br/>
	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
<br/>
	        		            	</div>
        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
    	<div>
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
<br/>
	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div>
	        	            	            	    <a href="./get-involved.html">Get Involved</a>
<br/>
	        		        	            	            	    <a href="./team-list.html">Committers</a>
<br/>
	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
<br/>
	        		            	</div>
        	<h3><a href="#Development">Development</a></h3>
    	<div>
	        	            	            	    <a href="./svn.html">Source Code</a>
<br/>
	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
<br/>
	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
<br/>
	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
<br/>
	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
<br/>
	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
<br/>
	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
<br/>
	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
<br/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div>
	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
<br/>
	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
<br/>
	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
<br/>
	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
<br/>
	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
<br/>
	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
<br/>
	        		            	</div>
        	<h3><a href="#Plugins">Plugins</a></h3>
    	<div>
	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
<br/>
	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
<br/>
	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
<br/>
	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
<br/>
	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
<br/>
	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
<br/>
	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div>
	        	            	            	<b>DB Sample Configurations</b><br/>
	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
<br/>
	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
<br/>
	            			            			    <a href="./OracleConfig.html">Oracle</a>
<br/>
	            			            			    <a href="./MySQLConfig.html">MySQL</a>
<br/>
	            			            			    <a href="./PostgresConfig.html">Postgres</a>
<br/>
	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
<br/>
	            			        		        	            	            	<b>Localization and languages</b><br/>
	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
<br/>
	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
<br/>
	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
<br/>
	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
<br/>
	            			        		        	            	            	<b>NAT Port Settings</b><br/>
	            			            			    <a href="./PortSettings.html">Port settings</a>
<br/>
	            			        		        	            	            	<b>Performance</b><br/>
	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
<br/>
	            			        		        	            	            	<b>User Interface</b><br/>
	            			            			    <a href="./themes-and-branding.html">Themes</a>
<br/>
	            			            			    <a href="./Dashboard.html">Dashboard</a>
<br/>
	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
<br/>
	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
<br/>
	            			            			    <a href="./HotKeys.html">Hot Keys</a>
<br/>
	            			        		        	            	            	<b>Customization</b><br/>
	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
<br/>
	            			            			    <a href="./Navigation.html">Navigation</a>
<br/>
	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
<br/>
	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
<br/>
	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
<br/>
	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
<br/>
	            			        		        	            	            	<b>Security</b><br/>
	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
<br/>
	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
<br/>
	            			        		        	            	            	<b>Converters</b><br/>
	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
<br/>
	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
<br/>
	            			        		        	            	            	<b>Clustering</b><br/>
	            			            			    <a href="./Clustering.html">Clustering</a>
<br/>
	            			        		        	            	            	<b>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>
     
    <br/>
    
                    </td>
                    <td width="80%" align="left" valign="top">
                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="OpenMeetings Source Code"><strong>OpenMeetings Source Code</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				OpenMeetings uses
				<a class="external" rel="nofollow" href="http://subversion.tigris.org">
					Subversion
				</a>
				to manage its source code.
				If you're new to Subversion, you can check out the
				<a href="http://svnbook.red-bean.com/">online book</a>
				about Subversion.
				Note that we are currently using Subversion 1.1.x (there are separate
				versions of the book covering 1.0 and 1.1).
			</p>
                                                <p>
				To receive notice of commits to the repository subscribe to
				<a href="mailto:commits@openmeetings.apache.org">
					commits@openmeetings.apache.org
				</a>
				by sending email to
				<a href="mailto:commits-subscribe@openmeetings.apache.org">
					commits-subscribe@openmeetings.apache.org
				</a>
				.
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Web Access to Subversion"><strong>Web Access to Subversion</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				If you just want to browse the source code, you can use the
				<a class="external" rel="nofollow" href="http://svn.apache.org/viewcvs/openmeetings">
					ViewCVS web interface
				</a>
				to Subversion. This is current at all times.
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Checking Out Code Using Subversion"><strong>Checking Out Code Using Subversion</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>Anyone can check code out of Subversion. You only need to specify
				a
				username and password to update the Subversion repository, and only
				OpenMeetings committers can do that.
				If you are a committer, are working from behind a firewall, or are
				connected to the internet through a proxy server, please see the
				sections
				below for more information.
			</p>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Anonymous check out from Subversion"><strong>Anonymous check out from Subversion</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>Use a command like:</p>
                                                <pre>% svn checkout
					http://svn.apache.org/repos/asf/openmeetings </pre>
                                                <p>Once you have OpenMeetings checked out you can update the source
					by executing the following command from within the openmeetings
					directory.
				</p>
                                                <pre>
					% svn update
				</pre>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Access from behind a firewall"><strong>Access from behind a firewall</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <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 HTTPS:
				</p>
                                                <pre>
					% svn checkout
					https://svn.apache.org/repos/asf/openmeetings
				</pre>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Access through a proxy"><strong>Access through a proxy</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>The Subversion client can go through a proxy, if you configure it
					to do so. First, edit your "servers" 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 "~/.subversion".
					On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%",
					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>
                                                <pre>
					[global]
					http-proxy-host = your.proxy.name
					http-proxy-port = 3128
				</pre>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Committer access"><strong>Committer access</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>Everyone can access the Apache Podling Subversion repository via
					HTTPS,
					but OpenMeetings Committers must checkout the Subversion repository
					via HTTPS.
				</p>
                                                <pre>
					% svn checkout
					https://svn.apache.org/repos/asf/openmeetings
				</pre>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Submitting Code Changes"><strong>Submitting Code Changes</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Submitting a patch"><strong>Submitting a patch</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>If you make changes to OpenMeetings, and would like to contribute
					it to the project, you should open a JIRA issue and discuss the
					merits
					of the proposal with the developer community. If there is agreement,
					create a patch and attach it to the JIRA issue.
				</p>
                                                <p>
					To create a patch, execute the svn diff command. This creates a patch
					that
					can easily be uploaded to a JIRA issue. A good name for the patch
					includes
					the JIRA issue name, e.g. OPENMEETINGS-104.patch. If there are several
					patches
					for the same JIRA issue, you might include your initials, e.g.
					OPENMEETINGS-104.clr.patch
				</p>
                                                <pre>
					% svn diff &gt; OPENMEETINGS-104.clr.patch
				</pre>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Committing changes to subversion"><strong>Committing changes to subversion</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
					To commit changes to the subversion repository, you must be an
					OpenMeetings committer. See
					<a href="get-involved.html">get involved</a>
					for information on how to become a committer and how to set up your
					password once you become a committer.
				</p>
                                                <p>
					Once your password is set, you can use a command like this to commit:
				</p>
                                                <pre>
					$&gt; svn commit --username your-username
					Authentication realm: &lt;https://svn.apache.org:443&gt; ASF Committers
					Password for 'your-username': your-password
				</pre>
                                                <p>You can also pass your password on the command line directly, but
					this is a security problem on multiuser unix computers (the command
					line
					arguments are available via the ps command). Here is the command if you
					are Windows or a single user unix computer:
				</p>
                                                <pre>
					$&gt; svn commit --username your-username --password your-password
				</pre>
                                                <p>Remember to replace 'your-username' and 'your-password' with
					your actual username and password on svn.apache.org.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Building Podling from Source"><strong>Building Podling from Source</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
				<!-- ***************** TBD ************************** -->
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Using Subversion on Windows with cygwin"><strong>Using Subversion on Windows with cygwin</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				If you use Subversion on Windows under cygwin, you may find that the
				Subversion client automatically assigns the executable property to
				non-executable files. In that case, you would see this at the bottom
				of
				an
				<em>svn diff</em>
				of the file:
			</p>
                                                <pre>
				Property changes on: test/sql/derby/datastoreidentity/schema1.sql
				___________________________________________________________________
				Name: svn:executable
				+ *
			</pre>
                                                <p>This section explains the source of the problem and suggests some
				actions to avoid it.
			</p>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Background"><strong>Background</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>Subversion carries executable information in the built-in
					property
					called svn:executable. This property, unlike others, may be present
					or absent, but it has no value. You can add it or delete it, but you
					cannot change its value.
				</p>
                                                <p>In theory, Subversion ignores Windows file permissions and by
					default
					does not set svn:executable. However, cygwin svn acts like Unix svn and
					determines the svn:executable property based on file permissions.
				</p>
                                                <p>
					If you create a file from the cygwin command line, by default it is
					executable only if the filename ends with .bat, .com or .exe, or if
					its
					content starts with #!. [This is what the doc says, but you may see -x
					for all files.] If you create a file using a Windows tool, by default
					its Windows permissions are executable by all. Cygwin interprets
					the
					Unix-style permissions this way as well. If the file is executable by all,
					cygwin svn sets the svn:executable property on the file when you
					invoke
					<em>svn add</em>
					.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Removing existing executable properties from the repository"><strong>Removing existing executable properties from the repository</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>You can use svn propdel to remove the svn:executable property
					from your
					working copy.
				</p>
                                                <pre>
					svn propdel -R svn:executable .
				</pre>
                                                <p>will recursively remove the svn:executable property from all of
					the
					files below the current directory. You can use this and commit the
					files to clean the repository if necessary.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Preventing Subversion from adding unwanted executable  properties"><strong>Preventing Subversion from adding unwanted executable  properties</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
					Windows/cygwin users who don't want to have to think about using
					<em>svn
						propdel
					</em>
					or
					<em>chmod</em>
					on each added file can use a non-cygwin
					version of svn. The Subversion 1.2.3 Win32 binaries, downloadable from the
					link at the bottom of
					<a rel="nofollow" href="http://subversion.tigris.org/project_packages.html">
						http://subversion.tigris.org/project_packages.html
					</a>
					, appear to work
					well. After installation add the svn.exe location to your Windows PATH
					variable. If you are switching from cygwin svn to Win32 svn
				</p>
                                                <ol type="1">
					<li>
						<p>Remove the subversion component from your cygwin installation
							because when svn is invoked from a cygwin window, the cygwin
							version is
							found even if your cygwin/bin directory is later on the path. (In the
							Select Packages window of the setup wizard, navigate to the
							subversion
							package in the Devel. category. Click on the status icon until Uninstall
							is displayed. Click next and continue through the wizard until
							installation
							is complete.)
						</p>
					</li>
					<li>
						<p>Copy the servers file and the auth folder from the sygwin
							~/.subversion
							directory to C:\Documents and
							Settings\&lt;user&gt;\Application Data\Subversion used by Win32
							subversion.
						</p>
					</li>
				</ol>
                                                <p>Note that windows svn uses backslash as the path separator when
					displaying file names. You cannot just copy and paste this file
					name
					to another svn command when running from within a cygwin shell.
					You need to enclose the file name into double quotes.
				</p>
                                                <p>Alternatively, Windows users can set file permissions in Windows
					Explorer. (Right-click on the top-level folder &amp; select
					Properties.
					Select the Security tab. Click Advanced. Remove all instances of
					Read &amp; Execute from the Permission Entries. Click "Reset
					permissions
					on all child objects and enable propogations of inheritable
					permissions".
					Click Apply. OK. OK.) You will have to do this again when you do a clean
					checkout to a new directory.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2014, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















