directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r906632 [1/4] - in /websites/staging/directory/trunk/content: ./ apacheds/ api/ api/download/ api/groovy-api/ api/user-guide/
Date Wed, 23 Apr 2014 13:10:55 GMT
Author: buildbot
Date: Wed Apr 23 13:10:52 2014
New Revision: 906632

Log:
manual

Added:
    websites/staging/directory/trunk/content/api/coding-standards.html
Modified:
    websites/staging/directory/trunk/content/   (props changed)
    websites/staging/directory/trunk/content/apacheds/developer-guide.html
    websites/staging/directory/trunk/content/api/developer-guide.html
    websites/staging/directory/trunk/content/api/download-old-versions.html
    websites/staging/directory/trunk/content/api/download/download-archive.html
    websites/staging/directory/trunk/content/api/download/download-sources.html
    websites/staging/directory/trunk/content/api/downloads.html
    websites/staging/directory/trunk/content/api/five-minutes-tutorial.html
    websites/staging/directory/trunk/content/api/groovy-api/1-groovy-ldap-download.html
    websites/staging/directory/trunk/content/api/groovy-api/2-groovy-ldap-user-guide.html
    websites/staging/directory/trunk/content/api/groovy-api/3-groovy-ldap-implementation.html
    websites/staging/directory/trunk/content/api/groovy-api/4-groovy-ldap-building.html
    websites/staging/directory/trunk/content/api/groovy-api/5-groovy-ldap-reference.html
    websites/staging/directory/trunk/content/api/groovy-api/6-groovy-ldap-origin.html
    websites/staging/directory/trunk/content/api/groovy-ldap.html
    websites/staging/directory/trunk/content/api/index.html
    websites/staging/directory/trunk/content/api/java-api.html
    websites/staging/directory/trunk/content/api/news.html
    websites/staging/directory/trunk/content/api/user-guide.html
    websites/staging/directory/trunk/content/api/user-guide/1-introduction.html
    websites/staging/directory/trunk/content/api/user-guide/1.1-java-and-ldap.html
    websites/staging/directory/trunk/content/api/user-guide/1.2-ldap-in-a-few-words.html
    websites/staging/directory/trunk/content/api/user-guide/1.3-apache-ldap-api-rational.html
    websites/staging/directory/trunk/content/api/user-guide/1.4-preparation-to-code.html
    websites/staging/directory/trunk/content/api/user-guide/2-basic-ldap-api-usage.html
    websites/staging/directory/trunk/content/api/user-guide/2.1-connection-disconnection.html
    websites/staging/directory/trunk/content/api/user-guide/2.2-binding-unbinding.html
    websites/staging/directory/trunk/content/api/user-guide/2.3-searching.html
    websites/staging/directory/trunk/content/api/user-guide/2.4-adding.html
    websites/staging/directory/trunk/content/api/user-guide/2.5-deleting.html
    websites/staging/directory/trunk/content/api/user-guide/2.6-modifying.html
    websites/staging/directory/trunk/content/api/user-guide/2.7-moving-renaming.html
    websites/staging/directory/trunk/content/api/user-guide/2.8-comparing.html
    websites/staging/directory/trunk/content/api/user-guide/2.9-exception-management.html
    websites/staging/directory/trunk/content/api/user-guide/3-advanced-ldap-api-usage.html
    websites/staging/directory/trunk/content/api/user-guide/3.1-controls.html
    websites/staging/directory/trunk/content/api/user-guide/3.2-extended-operations.html
    websites/staging/directory/trunk/content/api/user-guide/3.3-referrals.html
    websites/staging/directory/trunk/content/api/user-guide/3.4-aliases.html
    websites/staging/directory/trunk/content/api/user-guide/3.5-ldif-dsml.html
    websites/staging/directory/trunk/content/api/user-guide/3.6-abandonning.html
    websites/staging/directory/trunk/content/api/user-guide/3.7-server-informations.html
    websites/staging/directory/trunk/content/api/user-guide/4-schema-management.html
    websites/staging/directory/trunk/content/api/user-guide/4.1-schema-manager.html
    websites/staging/directory/trunk/content/api/user-guide/4.2-attribute-types.html
    websites/staging/directory/trunk/content/api/user-guide/4.3-dit-content-rules.html
    websites/staging/directory/trunk/content/api/user-guide/4.4-dit-structure-rules.html
    websites/staging/directory/trunk/content/api/user-guide/4.5-matching-rules.html
    websites/staging/directory/trunk/content/api/user-guide/4.6-matching-rule-uses.html
    websites/staging/directory/trunk/content/api/user-guide/4.7-object-classes.html
    websites/staging/directory/trunk/content/api/user-guide/4.8-name-forms.html
    websites/staging/directory/trunk/content/api/user-guide/4.9-syntaxes.html
    websites/staging/directory/trunk/content/api/user-guide/5-ldap-security.html
    websites/staging/directory/trunk/content/api/user-guide/5.1-aci-and-acls.html
    websites/staging/directory/trunk/content/api/user-guide/5.2-ssl.html
    websites/staging/directory/trunk/content/api/user-guide/5.3-start-tls.html
    websites/staging/directory/trunk/content/api/user-guide/6-ldap-data-structures.html
    websites/staging/directory/trunk/content/api/user-guide/6.1-administrative-point.html
    websites/staging/directory/trunk/content/api/user-guide/6.10-dit-content-rule.html
    websites/staging/directory/trunk/content/api/user-guide/6.11-dit-structure-rule.html
    websites/staging/directory/trunk/content/api/user-guide/6.12-entry.html
    websites/staging/directory/trunk/content/api/user-guide/6.13-expr-node.html
    websites/staging/directory/trunk/content/api/user-guide/6.14-ldap-comparator.html
    websites/staging/directory/trunk/content/api/user-guide/6.15-ldap-result.html
    websites/staging/directory/trunk/content/api/user-guide/6.16-ldap-syntax.html
    websites/staging/directory/trunk/content/api/user-guide/6.17-ldap-url.html
    websites/staging/directory/trunk/content/api/user-guide/6.18-ldif-control.html
    websites/staging/directory/trunk/content/api/user-guide/6.19-ldif-entry.html
    websites/staging/directory/trunk/content/api/user-guide/6.2-administrative-role.html
    websites/staging/directory/trunk/content/api/user-guide/6.20-matching-rule.html
    websites/staging/directory/trunk/content/api/user-guide/6.21-matching-rule-use.html
    websites/staging/directory/trunk/content/api/user-guide/6.22-message.html
    websites/staging/directory/trunk/content/api/user-guide/6.23-modification.html
    websites/staging/directory/trunk/content/api/user-guide/6.24-name-form.html
    websites/staging/directory/trunk/content/api/user-guide/6.25-normalizer.html
    websites/staging/directory/trunk/content/api/user-guide/6.26-object-class.html
    websites/staging/directory/trunk/content/api/user-guide/6.27-oid.html
    websites/staging/directory/trunk/content/api/user-guide/6.28-rdn.html
    websites/staging/directory/trunk/content/api/user-guide/6.29-referral.html
    websites/staging/directory/trunk/content/api/user-guide/6.3-attribute.html
    websites/staging/directory/trunk/content/api/user-guide/6.30-refinment.html
    websites/staging/directory/trunk/content/api/user-guide/6.31-schema-manager.html
    websites/staging/directory/trunk/content/api/user-guide/6.32-subentry.html
    websites/staging/directory/trunk/content/api/user-guide/6.33-subtree-specification.html
    websites/staging/directory/trunk/content/api/user-guide/6.34-syntax-checker.html
    websites/staging/directory/trunk/content/api/user-guide/6.35-value.html
    websites/staging/directory/trunk/content/api/user-guide/6.4-attribute-type.html
    websites/staging/directory/trunk/content/api/user-guide/6.5-ava.html
    websites/staging/directory/trunk/content/api/user-guide/6.6-csn.html
    websites/staging/directory/trunk/content/api/user-guide/6.7-control.html
    websites/staging/directory/trunk/content/api/user-guide/6.8-cursor.html
    websites/staging/directory/trunk/content/api/user-guide/6.9-dn.html
    websites/staging/directory/trunk/content/api/user-guide/7-requests-responses.html
    websites/staging/directory/trunk/content/api/user-guide/7.1-abandon-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.10-extended-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.11-extended-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.12-intermediate-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.13-mod-dn-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.14-mod-dn-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.15-modify-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.16-modify-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.17-search-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.18-search-result-done.html
    websites/staging/directory/trunk/content/api/user-guide/7.19-search-result-entry.html
    websites/staging/directory/trunk/content/api/user-guide/7.2-add-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.20-search-result-reference.html
    websites/staging/directory/trunk/content/api/user-guide/7.21-unbind-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.3-add-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.4-bind-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.5-bind-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.6-compare-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.7-compare-response.html
    websites/staging/directory/trunk/content/api/user-guide/7.8-del-request.html
    websites/staging/directory/trunk/content/api/user-guide/7.9-del-response.html
    websites/staging/directory/trunk/content/api/user-guide/8-ldap-rfcs.html
    websites/staging/directory/trunk/content/api/vision.html
    websites/staging/directory/trunk/content/articles.html
    websites/staging/directory/trunk/content/commercial-support.html
    websites/staging/directory/trunk/content/conference-materials.html
    websites/staging/directory/trunk/content/contribute.html
    websites/staging/directory/trunk/content/index.html
    websites/staging/directory/trunk/content/issue-tracking.html
    websites/staging/directory/trunk/content/mailing-lists-and-irc.html
    websites/staging/directory/trunk/content/original-project-proposal.html
    websites/staging/directory/trunk/content/privacy-policy.html
    websites/staging/directory/trunk/content/sources.html
    websites/staging/directory/trunk/content/special-thanks.html
    websites/staging/directory/trunk/content/team.html
    websites/staging/directory/trunk/content/testimonies.html
    websites/staging/directory/trunk/content/vision.html

Propchange: websites/staging/directory/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Apr 23 13:10:52 2014
@@ -1 +1 @@
-1586540
+1589401

Modified: websites/staging/directory/trunk/content/apacheds/developer-guide.html
==============================================================================
--- websites/staging/directory/trunk/content/apacheds/developer-guide.html (original)
+++ websites/staging/directory/trunk/content/apacheds/developer-guide.html Wed Apr 23 13:10:52 2014
@@ -152,20 +152,425 @@
 <li>No label implies <strong>GA</strong> (General Availability), which means the release is stable enough and therefore ready for production environment.</li>
 </ul>
 <DIV class="info" markdown="1">
-    A **stable** version is a version with a frozen set of features, and a frozen **API**. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
+    A <b>stable</b> version is a version with a frozen set of features, and a frozen <b>API</b>. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
     Although we may add new features between two milestones, and the data structure may change, which may imply that the data have to be extracted and reimported in order for the server to be operational.<BR/>
     The configuration might also evolve between two versions.
 </DIV>
 
 <h2 id="coding-standards">Coding standards</h2>
-<p>The applicable coding standards for ADS 1.5 are described in <a href="coding-standards.html">Coding Standards</a></p>
-<p>There are some more rules, as we are using <strong>Java 5</strong> now :</p>
+<p>The applicable coding standards for ADS 2.0 are described in <a href="coding-standards.html">Coding Standards</a></p>
+<p>There are some more rules, as we are using <strong>Java 6</strong> now :</p>
 <ul>
 <li>Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.</li>
 <li>If you can avoid <em>Iterators</em>, do so. There is this cool construction with a <strong>for( Type t:<collection instance> )</strong> : use it !</li>
 <li>Use <strong>assert</strong>. It's usefull, especially instead of a bunch of <strong>if (<test is wrong>)</strong> then throw Exception* when controlling incoming parameters</li>
 <li>Use the new <em>Enum</em> type !</li>
 </ul>
+<h2 id="releasing-apacheds">Releasing ApacheDS</h2>
+<p>Here is a guide on how to cut a new release. This is a long process, expect it to last a few hours !</p>
+<p>First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version of the JDK (1.7 is ok, it should also build with 1.6).</p>
+<h3 id="maven-settings">Maven Settings</h3>
+<p>You'll need a settings section for the <strong>Nexus</strong> and <strong>people.apache.org</strong> servers with a password or a path to the SSH key used. Here's what my <strong>settings.xml</strong> file in <strong>~/.m2</strong> looks like:</p>
+<div class="codehilite"><pre><span class="nt">&lt;settings&gt;</span>
+
+  <span class="nt">&lt;servers&gt;</span>
+    <span class="c">&lt;!-- To publish a snapshot of some part of Maven --&gt;</span>
+    <span class="nt">&lt;server&gt;</span>
+      <span class="nt">&lt;id&gt;</span>apache.snapshots.https<span class="nt">&lt;/id&gt;</span>
+      <span class="nt">&lt;username&gt;</span>username<span class="nt">&lt;/username&gt;</span>
+      <span class="nt">&lt;password&gt;</span>********<span class="nt">&lt;/password&gt;</span>
+    <span class="nt">&lt;/server&gt;</span>
+
+    <span class="c">&lt;!-- To publish a website using Maven --&gt;</span>
+    <span class="nt">&lt;server&gt;</span>
+      <span class="nt">&lt;id&gt;</span>apache.directory<span class="nt">&lt;/id&gt;</span>
+      <span class="nt">&lt;username&gt;</span>username<span class="nt">&lt;/username&gt;</span>
+      <span class="nt">&lt;privateKey&gt;</span>/Users/username/.ssh/id_rsa<span class="nt">&lt;/privateKey&gt;</span>
+      <span class="nt">&lt;filePermissions&gt;</span>664<span class="nt">&lt;/filePermissions&gt;</span>
+      <span class="nt">&lt;directoryPermissions&gt;</span>775<span class="nt">&lt;/directoryPermissions&gt;</span>
+    <span class="nt">&lt;/server&gt;</span>
+
+    <span class="c">&lt;!-- To stage a release of some part of Maven --&gt;</span>
+    <span class="nt">&lt;server&gt;</span>
+      <span class="nt">&lt;id&gt;</span>apache.releases.https<span class="nt">&lt;/id&gt;</span>
+      <span class="nt">&lt;username&gt;</span>username<span class="nt">&lt;/username&gt;</span>
+      <span class="nt">&lt;password&gt;</span>********<span class="nt">&lt;/password&gt;</span>
+    <span class="nt">&lt;/server&gt;</span>
+
+    <span class="c">&lt;!-- To stage a website of some part of Maven --&gt;</span>
+    <span class="nt">&lt;server&gt;</span>
+      <span class="nt">&lt;id&gt;</span>stagingSite<span class="nt">&lt;/id&gt;</span> <span class="c">&lt;!-- must match hard-coded repository identifier in site:stage-deploy --&gt;</span>
+      <span class="nt">&lt;username&gt;</span>elecharny<span class="nt">&lt;/username&gt;</span>
+      <span class="nt">&lt;filePermissions&gt;</span>664<span class="nt">&lt;/filePermissions&gt;</span>
+      <span class="nt">&lt;directoryPermissions&gt;</span>775<span class="nt">&lt;/directoryPermissions&gt;</span>
+    <span class="nt">&lt;/server&gt;</span>
+
+  <span class="nt">&lt;/servers&gt;</span>
+
+  <span class="nt">&lt;profiles&gt;</span>
+    <span class="nt">&lt;profile&gt;</span>
+      <span class="nt">&lt;id&gt;</span>apache-public<span class="nt">&lt;/id&gt;</span>
+      <span class="nt">&lt;pluginRepositories&gt;</span>
+        <span class="nt">&lt;pluginRepository&gt;</span>
+          <span class="nt">&lt;id&gt;</span>apache.public<span class="nt">&lt;/id&gt;</span>
+          <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/groups/public/<span class="nt">&lt;/url&gt;</span>
+        <span class="nt">&lt;/pluginRepository&gt;</span>
+      <span class="nt">&lt;/pluginRepositories&gt;</span>
+    <span class="nt">&lt;/profile&gt;</span>
+
+    <span class="nt">&lt;profile&gt;</span>
+      <span class="nt">&lt;id&gt;</span>apache-release<span class="nt">&lt;/id&gt;</span>
+      <span class="c">&lt;!-- Configuration for artifacts signature --&gt;</span>
+      <span class="nt">&lt;properties&gt;</span>
+        <span class="nt">&lt;gpg.passphrase&gt;</span>********<span class="nt">&lt;/gpg.passphrase&gt;</span>
+        <span class="nt">&lt;gpg.keyname&gt;</span>elecharny@apache.org<span class="nt">&lt;/gpg.keyname&gt;</span>
+      <span class="nt">&lt;/properties&gt;</span>
+    <span class="nt">&lt;/profile&gt;</span>
+  <span class="nt">&lt;/profiles&gt;</span>
+
+<span class="nt">&lt;/settings&gt;</span>
+</pre></div>
+
+
+<p>Just replace your username, passwords and paths. Note that the username and password is your Apache LDAP account.</p>
+<DIV class="info" markdown="1">
+You'll need to provide the passphrase in the <b>settings.xml</b> to access the gpg secret key installed on your host. This is due to a bug with the passphrase prompt in the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase in the <b>settings.xml</b> file in clear text. This should change in the future when this bug is fixed. Note that this passphrase is put into the release profile which we activate to properly sign and release the artifacts and poms via the release plugin.
+</DIV>
+
+<h3 id="gpg-key">GPG Key</h3>
+<p>All subprojects are configured to deploy signatures for the artifacts uploaded to the repository. The <strong>gpg</strong> plugin will check use the default gpg key for the user deploying the project with the release:perform directive of the release plugin. This will prompt you for the passphrase for the default key. If you do not have one setup the build will fail.</p>
+<p>You can generate and upload a PGP key to a PGP keyserver using the following commands:</p>
+<div class="codehilite"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">gen</span><span class="o">-</span><span class="n">key</span>
+<span class="n">gpg</span> <span class="o">--</span><span class="n">fingerprint</span>
+<span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">subkeys</span><span class="p">.</span><span class="n">pgp</span><span class="p">.</span><span class="n">net</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">keys</span> <span class="o">&lt;</span><span class="n">your</span> <span class="n">key</span><span class="o">&#39;</span><span class="n">s</span> <span class="n">id</span> <span class="n">from</span> <span class="n">last</span> <span class="n">command</span><span class="o">&gt;</span>
+</pre></div>
+
+
+<DIV class="info" markdown="1">
+Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and to have added your public key to the <b>KEYS</b> file.
+See also http://people.apache.org/~henkp/repo/faq.html#4
+</DIV>
+
+<h3 id="releasing-apacheds_1">Releasing ApacheDS</h3>
+<p>Now that your environment has been setup, we will show you how to build and release the ApacheDS subproject. Keep an eye out for warnings and note sections that show version specific differences in this process. </p>
+<h4 id="manual-steps">Manual Steps</h4>
+<p>Some things have not yet been automated with maven and require users to manually edit some files. Below are the steps to follow.</p>
+<h5 id="update-the-apachedspomxml">Update the apacheds/pom.xml</h5>
+<p>The current <em>apacheds/pom.xml</em> contains references to LDAP API SNAPSHOTs, which is not good. You have to bump up those references to the latest LDAP-API version.</p>
+<h5 id="update-serviceapachedssh-and-serviceapachedsbat">Update service/apacheds.sh and service/apacheds.bat</h5>
+<p>Edit the <em>apacheds.sh/bat</em> files in the service project directory to update the revision numbers used in that file to reference non-SNAPSHOT releases. </p>
+<h4 id="release-process">Release process</h4>
+<p>Since we are using Nexus for releases the release process is as follows (see also <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven">Publishing maven artifacts</a>.</p>
+<h5 id="test-the-project">Test the Project</h5>
+<div class="codehilite"><pre>$ <span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">prepare</span> <span class="o">-</span><span class="n">DdryRun</span><span class="p">=</span><span class="n">true</span>
+</pre></div>
+
+
+<p>Replace the version by the new version. Be careful, and remove the 'apacheds-parent-' which is proposed for the new tag. We should just use the version number.</p>
+<h5 id="deploy-a-snapshot">Deploy a Snapshot</h5>
+<div class="codehilite"><pre>$ <span class="n">mvn</span> <span class="n">deploy</span>
+</pre></div>
+
+
+<p>This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)</p>
+<h5 id="prepare-the-release">Prepare the Release</h5>
+<div class="codehilite"><pre>$ <span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">clean</span>
+$ <span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">prepare</span>
+</pre></div>
+
+
+<p>This creates a tag <a href="http://svn.apache.org/viewvc/directory/apacheds/tags/">here</a></p>
+<h5 id="stage-the-release">Stage the Release</h5>
+<div class="codehilite"><pre>$ <span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">perform</span>
+</pre></div>
+
+
+<p>This deploys the release to a staging repository. Go to <a href="https://repository.apache.org/index.html#stagingRepositories">Staging Repositories</a> and close the staging repository.</p>
+<h5 id="build-the-site">Build the Site</h5>
+<p>In order to generate the site, you have to comment some modules in the apacheds <em>pom.xml</em> file :</p>
+<div class="codehilite"><pre><span class="c">&lt;!--module&gt;installers-maven-plugin&lt;/module--&gt;</span>
+<span class="c">&lt;!--module&gt;installers&lt;/module--&gt;</span>
+</pre></div>
+
+
+<p>Then you can start the maven command :</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="n">target</span><span class="o">/</span><span class="n">checkout</span>
+$ <span class="n">mvn</span> <span class="n">site</span>
+</pre></div>
+
+
+<p>This creates the site and the Javadocs.</p>
+<DIV class="info" markdown="1">
+Now, you have to sign the sources packages which are in <em>apacheds/target/checkout/target</em>.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+</DIV>
+
+<p>You can get the keys by typing :</p>
+<div class="codehilite"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">keys</span>
+</pre></div>
+
+
+<p>You can use this small script that does the job (copy-paste this code in a file named <em>sign.sh</em> in your path) :</p>
+<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47</pre></div></td><td class="code"><div class="codehilite"><pre><span class="c">#!/bin/sh</span>
+
+<span class="nb">echo</span> <span class="s2">&quot;PGP Key ID: &quot;</span>
+<span class="nb">read </span>DEFAULT_KEY
+
+<span class="nb">echo</span> <span class="s2">&quot;PGP Key Password: &quot;</span>
+stty -echo
+<span class="nb">read </span>PASSWORD
+stty <span class="nb">echo</span>
+<span class="nb">echo</span> <span class="s2">&quot;&quot;</span>
+
+<span class="k">for </span>FILE in <span class="k">$(</span>find . -maxdepth 1 -not <span class="s1">&#39;(&#39;</span> -name <span class="s2">&quot;sign.sh&quot;</span> -or -name <span class="s2">&quot;.*&quot;</span> -or -name <span class="s2">&quot;*.md5&quot;</span> -or -name <span class="s2">&quot;*.sha1&quot;</span> -or -name <span class="s2">&quot;*.asc&quot;</span> <span class="s1">&#39;)&#39;</span> -and -type f<span class="k">)</span> ; <span class="k">do</span>
+
+<span class="k">    if</span> <span class="o">[</span> -f <span class="s2">&quot;$FILE.asc&quot;</span> <span class="o">]</span>; <span class="k">then</span>
+<span class="k">        </span><span class="nb">echo</span> <span class="s2">&quot;Skipping: $FILE&quot;</span>
+        <span class="k">continue</span>
+<span class="k">    fi</span>
+
+<span class="k">    </span><span class="nb">echo</span> -n <span class="s2">&quot;Signing: $FILE ... &quot;</span>
+
+    <span class="c"># MD5</span>
+    <span class="k">if</span> <span class="o">[</span> ! -f <span class="s2">&quot;$FILE.md5&quot;</span> <span class="o">]</span>;
+    <span class="k">then</span>
+<span class="k">        </span>openssl md5 &lt; <span class="s2">&quot;$FILE&quot;</span> | cut <span class="s2">&quot;-d &quot;</span> -f2 &gt; <span class="s2">&quot;$FILE.md5&quot;</span>
+        <span class="nb">echo</span> <span class="s2">&quot;  - Generated &#39;$FILE.md5&#39;&quot;</span>
+    <span class="k">else</span>
+<span class="k">        </span><span class="nb">echo</span> <span class="s2">&quot;  - Skipped &#39;$FILE.md5&#39; (file already existing)&quot;</span>
+    <span class="k">fi</span>
+
+    <span class="c"># SHA1</span>
+    <span class="k">if</span> <span class="o">[</span> ! -f <span class="s2">&quot;$FILE.sha1&quot;</span> <span class="o">]</span>;
+    <span class="k">then</span>
+<span class="k">        </span>gpg -v --default-key <span class="s2">&quot;$DEFAULT_KEY&quot;</span> --print-md SHA1 <span class="s2">&quot;$FILE&quot;</span> &gt; <span class="s2">&quot;$FILE&quot;</span>.sha1
+        <span class="nb">echo</span> <span class="s2">&quot;  - Generated &#39;$FILE.sha1&#39;&quot;</span>
+    <span class="k">else</span>
+<span class="k">        </span><span class="nb">echo</span> <span class="s2">&quot;  - Skipped &#39;$FILE.sha1&#39; (file already existing)&quot;</span>
+    <span class="k">fi</span>
+
+    <span class="c"># ASC</span>
+    <span class="k">if</span> <span class="o">[</span> ! -f <span class="s2">&quot;$FILE.asc&quot;</span> <span class="o">]</span>;
+    <span class="k">then</span>
+<span class="k">        </span><span class="nb">echo</span> <span class="s2">&quot;$PASSWORD&quot;</span> | gpg --default-key <span class="s2">&quot;$DEFAULT_KEY&quot;</span> --detach-sign --armor --no-tty --yes --passphrase-fd 0 <span class="s2">&quot;$FILE&quot;</span>
+        <span class="nb">echo</span> <span class="s2">&quot;  - Generated &#39;$FILE.asc&#39;&quot;</span>
+    <span class="k">else</span>
+<span class="k">        </span><span class="nb">echo</span> <span class="s2">&quot;  - Skipped &#39;$FILE.asc&#39; (file already existing)&quot;</span>
+    <span class="k">fi</span>
+<span class="k">done</span>
+</pre></div>
+</td></tr></table>
+
+<p>Then to sign the packages :</p>
+<div class="codehilite"><pre>$ <span class="nb">sign</span><span class="p">.</span><span class="n">sh</span>
+<span class="n">PGP</span> <span class="n">Key</span> <span class="n">ID</span><span class="p">:</span> 
+<span class="o">&lt;</span><span class="n">your</span> <span class="n">PGP</span> <span class="n">key</span><span class="o">&gt;</span>
+<span class="n">PGP</span> <span class="n">Key</span> <span class="n">Password</span><span class="p">:</span> 
+<span class="o">&lt;</span><span class="n">Your</span> <span class="n">password</span><span class="o">&gt;</span>
+
+<span class="o">-</span><span class="n">n</span> <span class="n">Signing</span><span class="p">:</span> <span class="o">./</span><span class="n">apacheds</span><span class="o">-</span><span class="n">parent</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span> <span class="p">...</span> 
+<span class="o">-</span> <span class="n">Generated</span> <span class="s">&#39;./apacheds-parent-&lt;version&gt;-source-release.zip.md5&#39;</span>
+<span class="o">-</span> <span class="n">Generated</span> <span class="s">&#39;./apacheds-parent-&lt;version&gt;-source-release.zip.sha1&#39;</span>
+<span class="o">-</span> <span class="n">Generated</span> <span class="s">&#39;./apacheds-parent-&lt;version&gt;-source-release.zip.asc&#39;</span>
+$
+</pre></div>
+
+
+<h5 id="publish-source-distribution-package">Publish Source Distribution Package</h5>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">target</span>
+$ <span class="n">scp</span> <span class="n">apacheds</span><span class="o">-</span><span class="n">parent</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="o">*</span> <span class="n">people</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="p">:</span><span class="n">public_html</span><span class="o">/</span><span class="n">apacheds</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+</pre></div>
+
+
+<h5 id="test-the-new-version">Test the new version</h5>
+<p>The best way to do that is to download the sources, extract them, build the server and the installers, and check if the installers are correctly working. Then check that the server is correctly running.</p>
+<h5 id="create-the-installers">Create the installers</h5>
+<p>We now have to create the installers. Go into the <em>target/checkout</em> directory and run :</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="n">apacheds</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">installers</span>
+$ <span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="o">-</span><span class="n">Pinstallers</span>
+</pre></div>
+
+
+<p>This will create the installers in the <em>target/checkout/installers/target/installers</em> directory</p>
+<p>Sign those installers using the <em>sign.sh</em> script, and copy them in <em>people.apache.org/public_html/apacheds-<version></em></p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="n">apacheds</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">installers</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">installers</span>
+$ <span class="n">scp</span> <span class="n">apacheds</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;*</span> <span class="n">people</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="p">:</span><span class="n">public_html</span><span class="o">/</span><span class="n">apacheds</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+</pre></div>
+
+
+<p>Note : you will need a Debian, a Fedora and a Windows server to generate dedicated binaries for those platforms, or you can use rpmbuild, dpkg or nsis if you don't want to use many different servers.</p>
+<p>Update your index.html file on people.apache.org/public_html to make the packages visible. Here is an example of possible content :</p>
+<div class="codehilite"><pre><span class="nt">&lt;h2&gt;</span>Last Directory Server <span class="nt">&lt;version&gt;</span> sources tarballs<span class="nt">&lt;/h2&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip&quot;</span><span class="nt">&gt;</span>apacheds-parent-<span class="nt">&lt;version&gt;</span>-source-release.zip<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.asc&quot;</span><span class="nt">&gt;</span>apacheds-parent-<span class="nt">&lt;version&gt;</span>-source-release.zip.asc<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.md5&quot;</span><span class="nt">&gt;</span>apacheds-parent-<span class="nt">&lt;version&gt;</span>-source-release.zip.md5<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.sha1&quot;</span><span class="nt">&gt;</span>apacheds-parent-<span class="nt">&lt;version&gt;</span>-source-release.zip.sha1<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
+
+<span class="nt">&lt;h2&gt;</span>Last Directory Server <span class="nt">&lt;version&gt;</span> installers<span class="nt">&lt;/h2&gt;</span>
+    <span class="nt">&lt;h3&gt;</span>Plain 32 bits binary installers<span class="nt">&lt;/h3&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-32bit.bin<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.asc&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-32bit.bin.asc<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.md5&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-32bit.bin.md5<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.sha1&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-32bit.bin.sha1<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;br/&gt;</span>
+    <span class="nt">&lt;h3&gt;</span>Plain 64 bits installers<span class="nt">&lt;/h3&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-64bit.bin<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.asc&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-64bit.bin.asc<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.md5&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-64bit.bin.md5<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">&quot;/icons/compressed.gif&quot;</span> <span class="na">alt=</span><span class="s">&quot;[   ]&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.sha1&quot;</span><span class="nt">&gt;</span>apacheds-<span class="nt">&lt;version&gt;</span>-64bit.bin.sha1<span class="nt">&lt;/a&gt;&lt;br/&gt;</span>
+    <span class="nt">&lt;br/&gt;</span>
+...
+</pre></div>
+
+
+<h5 id="vote">Vote</h5>
+<p>Start a 72h vote at the dev mailing list.</p>
+<h5 id="release">Release</h5>
+<p>If the vote succeeds Apacheds project can be released.</p>
+<p>Go to <em>https://repository.apache.org/index.html#stagingRepositories</em> and release the staging repository so all artifacts are published to Maven central.</p>
+<p>Move the distribution packages (sources and binaries) to the dist SVN repository: <em>https://dist.apache.org/repos/dist/release/directory/apacheds/dist/$(version)</em></p>
+<p>The best solution would be to checkout the directory in <em>people.apache.org</em>, to copy the packages in the right place, and to check in the changes :</p>
+<div class="codehilite"><pre>$ <span class="n">ssh</span> <span class="n">people</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span>
+# <span class="n">svn</span> <span class="n">co</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">dist</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">dist</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="n">directory</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">dist</span><span class="o">/</span> <span class="n">apacheds</span><span class="o">-</span><span class="n">dist</span>
+# <span class="n">cd</span> <span class="n">apacheds</span><span class="o">-</span><span class="n">dist</span>
+# <span class="n">mkdir</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+# <span class="n">cp</span> <span class="p">.</span><span class="o">./</span><span class="n">public_html</span><span class="o">/</span><span class="n">apacheds</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;/*</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+# <span class="n">svn</span> <span class="n">ci</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+<span class="p">...</span>
+# <span class="n">exit</span>
+$
+</pre></div>
+
+
+<p>The packages should now be available on <em>http://www.us.apache.org/dist/directory/api/dist/<version></em></p>
+<h5 id="deploy-the-javadocs-and-xref">Deploy the Javadocs and XRef</h5>
+<p>We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :</p>
+<div class="codehilite"><pre><span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">site</span>
+</pre></div>
+
+
+<p>We will copy two directories :</p>
+<div class="codehilite"><pre><span class="n">apidocs</span>
+<span class="n">xref</span>
+</pre></div>
+
+
+<p><em>Staging or Production?</em></p>
+<p>Those files will be stored on the production server only !!! And some extra caution ust be taken not to delete them when we will publish the staging site too...</p>
+<p>First of all, you must checkout the two CMS store for the site : staging and revision.</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="o">~/</span><span class="n">apacheds</span>
+$ <span class="n">svn</span> <span class="n">co</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">infra</span><span class="o">/</span><span class="n">websites</span><span class="o">/</span><span class="n">production</span><span class="o">/</span><span class="n">directory</span><span class="o">/</span><span class="n">trunk</span> <span class="n">staging</span>
+<span class="p">...</span>
+$ <span class="n">svn</span> <span class="n">co</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">infra</span><span class="o">/</span><span class="n">websites</span><span class="o">/</span><span class="n">production</span><span class="o">/</span><span class="n">directory</span> <span class="n">production</span>
+<span class="p">...</span>
+</pre></div>
+
+
+<p>Now, you will first add the directory for the newly generated version :</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">production</span><span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">gen</span><span class="o">-</span><span class="n">docs</span>
+$ <span class="n">mkdir</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+</pre></div>
+
+
+<p>Then copy the generated docs :</p>
+<div class="codehilite"><pre>$ <span class="n">cp</span> <span class="o">-</span><span class="n">r</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">trunks</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">site</span><span class="o">/</span><span class="n">apidocs</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">production</span><span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">gen</span><span class="o">-</span><span class="n">docs</span><span class="o">/&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+$ <span class="n">cp</span> <span class="o">-</span><span class="n">r</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">trunks</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">checkout</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">site</span><span class="o">/</span><span class="n">xref</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">production</span><span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">gen</span><span class="o">-</span><span class="n">docs</span><span class="o">/&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+$
+</pre></div>
+
+
+<p>You have to check in those directories :</p>
+<div class="codehilite"><pre>$ <span class="n">svn</span> <span class="n">add</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+$ <span class="n">svn</span> <span class="n">ci</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">m</span> &quot;<span class="n">Injected</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="n">javadocs</span>&quot;
+</pre></div>
+
+
+<p>Now, you have to update the staging site :</p>
+<div class="codehilite"><pre><span class="n">extpaths</span><span class="p">.</span><span class="n">txt</span>
+</pre></div>
+
+
+<p>This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">staging</span><span class="o">/</span><span class="n">content</span><span class="o">/</span>
+$ <span class="n">vi</span> <span class="n">extpaths</span><span class="p">.</span><span class="n">txt</span>
+</pre></div>
+
+
+<p>Add the following line :</p>
+<div class="codehilite"><pre><span class="p">...</span>
+# <span class="n">Apacheds</span>
+<span class="n">apacheds</span><span class="o">/</span><span class="n">gen</span><span class="o">-</span><span class="n">docs</span><span class="o">/&lt;</span><span class="n">version</span><span class="o">&gt;</span>
+<span class="p">...</span>
+</pre></div>
+
+
+<p>then save and check in the file <em>.htaccess</em></p>
+<p>We also have to update this file :</p>
+<div class="codehilite"><pre>$ <span class="n">cd</span> <span class="o">~/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">staging</span><span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">apacheds</span><span class="o">/</span><span class="n">gen</span><span class="o">-</span><span class="n">docs</span>
+$ <span class="n">vi</span> <span class="p">.</span><span class="n">htaccess</span>
+</pre></div>
+
+
+<p>And update the two last lines to refer to the version you've just released :</p>
+<div class="codehilite"><pre><span class="n">RewriteRule</span> ^<span class="n">latest</span>$ <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;/</span>
+<span class="n">RewriteRule</span> ^<span class="n">latest</span><span class="o">/</span><span class="p">(</span><span class="o">.*</span><span class="p">)</span>$ <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;/</span>$1
+</pre></div>
+
+
+<p>Save and commit the file.</p>
+<h5 id="update-the-web-site">Update the web site</h5>
+<p>You can now update the site, add a news on the front page, and publish the site.</p>
+<h5 id="inform-the-world">Inform the world !</h5>
+<p>After 24h, you can now inform the world about the release.</p>
+<p>Send a mail to the users and dev mailing list, and one to the <em>announce@apache.org</em></p>
+<p>You are done !</p>
 
 
 

Added: websites/staging/directory/trunk/content/api/coding-standards.html
==============================================================================
--- websites/staging/directory/trunk/content/api/coding-standards.html (added)
+++ websites/staging/directory/trunk/content/api/coding-standards.html Wed Apr 23 13:10:52 2014
@@ -0,0 +1,266 @@
+<!DOCTYPE html>
+<!--
+    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.
+-->
+<html>
+	<head>
+		<title>Coding Standards &mdash; Apache Directory</title>
+		
+	    <link href="./../css/common.css" rel="stylesheet" type="text/css">
+	    <link href="./../css/brown.css" rel="stylesheet" type="text/css">
+    
+        
+        <link rel="shortcut icon" href="./../images/api-icon_16x16.png">
+    
+        <!-- Google Analytics -->
+        <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
+        <script type="text/javascript">
+            _uacct = "UA-1358462-1";
+            urchinTracker();
+        </script>
+	</head>
+	<body>
+	    <div id="container">
+            <div id="header">
+                <div id="subProjectsNavBar">
+                    <a href="./../">
+                        
+                        Apache Directory Project
+                        
+                    </a>
+                    &nbsp;|&nbsp;
+                    <a href="./../apacheds">
+                        
+                        ApacheDS
+                        
+                    </a>
+                    &nbsp;|&nbsp;
+                    <a href="./../studio">
+                        
+                        Apache Directory Studio
+                        
+                    </a>
+                    &nbsp;|&nbsp;
+                    <a href="./../api">
+                        
+                        <STRONG>Apache LDAP API</STRONG>
+                        
+                    </a>
+                    &nbsp;|&nbsp;
+                    <a href="./../mavibot">
+                        
+                        Mavibot
+                        
+                    </a>
+                    &nbsp;|&nbsp;
+                    <a href="./../escimo">
+                        
+                        eSCIMo
+                        
+                    </a>
+                </div><!-- subProjectsNavBar -->
+            </div><!-- header -->
+            <div id="content">
+                <div id="leftColumn">
+                    
+<div id="navigation">
+    
+    <h5>LDAP API 1.0</h5>
+    <ul>
+        <li><a href="./../api/">Home</a></li>
+        <li><a href="./../api/news.html">News</a></li>
+    </ul>
+    <h5>Downloads</h5>
+    <ul>
+	    <li><a href="./../api/downloads.html">Version 1.0.0-M22</a>&nbsp;&nbsp;<IMG src="./../images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+        <li><a href="./../api/download-old-versions.html">Older versions</a></li>
+    </ul>
+    <h5>Getting Started</h5>
+    <ul>
+        <li><a href="./../api/vision.html">Vision</a></li>
+        <li><a href="./../api/java-api.html">Java API</a></li>
+        <li><a href="./../api/groovy-ldap.html">Groovy API</a></li>
+    </ul>
+    <h5>Documentation</h5>
+    <ul>
+	    <li><a href="./../api/five-minutes-tutorial.html">Five minutes tutorial</a></li>
+	    <li><a href="./../api/user-guide.html">User Guide</a></li>
+        <li><a href="./../api/gen-docs/latest/apidocs/">JavaDocs</a></li>
+        <!--li><a href="./../api/gen-docs/latest/">Generated Reports</a></li-->
+        <li><a href="./../api/developer-guide.html">Developer Guide</a></li>
+    </ul>
+    
+    
+    <h5>Support</h5>
+    <ul>
+        <li><a href="./../mailing-lists-and-irc.html">Mailing Lists &amp; IRC</a></li>
+        <li><a href="./../sources.html">Sources</a></li>
+        <li><a href="./../issue-tracking.html">Issue Tracking</a></li>
+        <li><a href="./../commercial-support.html">Commercial Support</a></li>
+    </ul>
+    <h5>Community</h5>
+    <ul>
+        <li><a href="./../contribute.html">How to Contribute</a></li>
+        <li><a href="./../team.html">Team</a></li>
+        <li><a href="./../original-project-proposal.html">Original Project Proposal</a></li>
+        <li><a href="./../special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+    </ul>
+    <h5>About Apache</h5>
+    <ul>
+        <li><a href="http://www.apache.org/">Apache</a></li>
+        <li><a href="http://www.apache.org/licenses/">License</a></li>
+        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+        <li><a href="http://www.apache.org/security/">Security</a></li>
+    </ul>
+    
+</div><!-- navigation -->
+
+                </div><!-- leftColumn -->
+                <div id="rightColumn">
+
+
+
+<h1 id="coding-standards">Coding Standards</h1>
+<p>Welcome to you, developper ! You have been elected committer on the project, or you want to contribute some code or some patch? This is great news. However, in order to be able to share your 'vision' and your code, some rules must be followed.</p>
+<p>Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are <em><em>alway</em>s</em> stupid, but smart people follow them ;)</p>
+<p><strong>eclipse IDE</strong></p>
+<p>Eclipse users can import those two files to enfore the code formating : <a href="http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml">formatting.xml</a> and <a href="http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml">codetemplates.xml</a></p>
+<p><strong>IDEA IDE</strong></p>
+<p>IDEA users can import <a href="settings.jar">this file</a> to enfore the code formating.</p>
+<h2 id="headers">Headers</h2>
+<p>First, you <strong>must</strong> (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :</p>
+<div class="codehilite"><pre><span class="cm">/*</span>
+<span class="cm"> *  Licensed to the Apache Software Foundation (ASF) under one</span>
+<span class="cm"> *  or more contributor license agreements.  See the NOTICE file</span>
+<span class="cm"> *  distributed with this work for additional information</span>
+<span class="cm"> *  regarding copyright ownership.  The ASF licenses this file</span>
+<span class="cm"> *  to you under the Apache License, Version 2.0 (the</span>
+<span class="cm"> *  &quot;License&quot;); you may not use this file except in compliance</span>
+<span class="cm"> *  with the License.  You may obtain a copy of the License at</span>
+<span class="cm"> *</span>
+<span class="cm"> *    http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="cm"> *</span>
+<span class="cm"> *  Unless required by applicable law or agreed to in writing,</span>
+<span class="cm"> *  software distributed under the License is distributed on an</span>
+<span class="cm"> *  &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
+<span class="cm"> *  KIND, either express or implied.  See the License for the</span>
+<span class="cm"> *  specific language governing permissions and limitations</span>
+<span class="cm"> *  under the License.</span>
+<span class="cm"> *</span>
+<span class="cm"> */</span>
+</pre></div>
+
+
+<h3 id="classinterface-headers">Class/Interface headers</h3>
+<p>Each <strong>Class</strong> or <em>Interface</em> should have an header which must contains :</p>
+<ul>
+<li>A descrption of this class/interface</li>
+<li>
+<p>an <em>author</em> tag which should be :</p>
+<div class="codehilite"><pre><span class="nd">@author</span> <span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;mailto:dev@directory.apache.org&quot;</span><span class="o">&gt;</span><span class="n">Apache</span> <span class="n">Directory</span> <span class="n">Project</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span>
+</pre></div>
+
+
+</li>
+</ul>
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
+</DIV>
+
+<p>If you use <strong>html</strong> tags, remember to escape '&lt;' and '&gt;' characters...</p>
+<h3 id="static-members-and-other-members">Static members and other members</h3>
+<p>Just add a single line javadoc comment like : <em>/*<em> blah ... </em>/</em> before each member</p>
+<h3 id="methods">Methods</h3>
+<p>Follow the standard <strong>javadoc</strong> rules : Description, <strong>@param</strong>, <strong>@exception</strong> and <strong>@return</strong>. It should be enough. Avoid <strong>@tags</strong>, <strong>@todo</strong> tags, etc...</p>
+<p>Escape <strong>html</strong> characters</p>
+<h2 id="comments">Comments</h2>
+<p>No special rules, except that you should avoid :</p>
+<ul>
+<li>Useless comments like : i++; /* Increment i */</li>
+<li>Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...</li>
+<li>Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !</li>
+<li>Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !</li>
+</ul>
+<p>Basically, use your common sense :-)</p>
+<h2 id="naming">Naming</h2>
+<p>Naming ! Sounds like Blaming :-). Ok. We use <strong>Sun(tm/c/r)</strong> style :</p>
+<ul>
+<li>Constants are in UPPER CASE with accepted '_'</li>
+<li>Class starts with an uppercase and each starting word is upper cased. No '_', please !</li>
+<li>Methods starts with lower case and then follow the same rule than classes. No '_', please !</li>
+<li>Interfaces should not start with an 'I'</li>
+<li>Classes which implements an Interface must be followed by the postfix 'impl'</li>
+<li>Variables follow the method naming convention. No '_', please !</li>
+<li>Use meaningfull names.</li>
+<li>No double letter variables like ii, jj etc...</li>
+</ul>
+<p>If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)</p>
+<p>Naming is really important for <strong>APIs</strong>. Be smart. If you are not sure, ask.</p>
+<h2 id="spaces-vs-tabs">Spaces vs tabs</h2>
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+<p>No discussion. Using tabs break diffs. Modify your <strong>IDE</strong> to insert spaces when you use tabs, before it saves the file.</p>
+<h2 id="formatting">Formatting</h2>
+<p>Use the <strong>formatting.xml</strong> file which can be found in the <strong>resources</strong> directory in the root of the project. This is for <em>Eclipse</em>. If you don't use eclipse, then translate the formating to your favorite <strong>IDE</strong>.</p>
+<p>Use the <strong>codetemplates.xml</strong> file if you are using <em>Eclipse</em> too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.</p>
+<p>Use <strong>UTF-8</strong> as a default for your files (except for properties, thanks to <strong>java</strong>, which should be in <strong>ISO-8859-1</strong>). Forget about exotic encoding...</p>
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+<p>People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...</p>
+<p>Some general rules :</p>
+<ul>
+<li>Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)</li>
+<li>No more than one instruction on a single line, the only exception is the '?' ':' operation</li>
+<li>Use <em>this</em> to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.</li>
+<li>Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use <strong>this</strong> instead.</li>
+<li>Don't add <strong>final</strong> everywhere. Even if <strong>final</strong> is a substitute for <strong>const</strong>, it's semantic is not clear enough that you use it everywhere.</li>
+<li>Add spaces in method calls after '(' and before ')'</li>
+<li>'{' and '}' must be on the same column</li>
+</ul>
+<p>This is a code example :</p>
+<div class="codehilite"><pre><span class="o">...</span>
+<span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">myMethod</span><span class="o">(</span> <span class="n">param1</span><span class="o">,</span> <span class="n">param2</span> <span class="o">)</span>
+
+<span class="k">if</span> <span class="o">(</span> <span class="n">result</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">)</span>
+<span class="o">{</span>
+    <span class="c1">// do something</span>
+<span class="o">}</span>
+<span class="o">...</span>
+</pre></div>
+
+
+<h2 id="imports">Imports</h2>
+<p>Always declare all the classes you import, do not use <strong>x.y.*</strong></p>
+<h2 id="what-else">What else ?</h2>
+<p>Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.</p>
+<p>That's it ! (I wait your comments, guys :-)</p>
+
+
+
+                </div><!-- rightColumn -->
+                <div id="endContent"></div>
+            </div><!-- content -->
+            <div id="footer">&copy; 2003-2014, <a href="http://www.apache.org">The Apache Software Foundation</a> - <a href="./../privacy-policy.html">Privacy Policy</a><br />
+                Apache Directory, ApacheDS, Apache Directory Server, Apache Directory Studio, Apache LDAP API, Apache Triplesec, Triplesec, Apache Mavibot, Mavibot, Apache eSCIMo, eSCIMo, Apache, the Apache feather logo, and the Apache Directory project logos are trademarks of The Apache Software Foundation.
+            </div>
+        </div><!-- container -->
+    </body>
+</html>
\ No newline at end of file



Mime
View raw message