blob: 0cdd4abd30e5cc673169b405df9745f9aad33729 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed 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.
-->
<document>
<properties>
<title>Source Code</title>
<author email="sebawagner@apache.org">
Sebastian Wagner
</author>
</properties>
<body>
<section name="OpenMeetings Source Code">
<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>
</section>
<section name="Web Access to Subversion">
<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>
</section>
<section name="Checking Out Code Using Subversion">
<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>
<subsection name="Anonymous check out from Subversion">
<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>
</subsection>
<subsection name="Access from behind a firewall">
<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>
</subsection>
<subsection name="Access through a proxy">
<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>
</subsection>
<subsection name="Committer access">
<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>
</subsection>
</section>
<section name="Submitting Code Changes">
<subsection name="Submitting a patch">
<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>
</subsection>
<subsection name="Committing changes to subversion">
<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>
</subsection>
</section>
<section name="Building Podling from Source">
<p>
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
<!-- ***************** TBD ************************** -->
</p>
</section>
<section name="Using Subversion on Windows with cygwin">
<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>
<subsection name="Background">
<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>
</subsection>
<subsection
name="Removing existing executable properties from the repository">
<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>
</subsection>
<subsection
name="Preventing Subversion from adding unwanted executable
properties">
<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>
</subsection>
</section>
</body>
</document>