You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2015/04/28 08:56:11 UTC

[1/5] zest-qi4j git commit: Minor: add private/cache to .gitignore

Repository: zest-qi4j
Updated Branches:
  refs/heads/develop e6917968a -> fd0c2126a


Minor: add private/cache to .gitignore


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/46d34a53
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/46d34a53
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/46d34a53

Branch: refs/heads/develop
Commit: 46d34a537ffc99051a86d6a79dbaefe3248b3ac9
Parents: e691796
Author: Paul Merlin <pa...@apache.org>
Authored: Tue Apr 28 08:35:46 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Tue Apr 28 08:35:46 2015 +0200

----------------------------------------------------------------------
 .gitignore | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/46d34a53/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 0e4a69d..9a8a6de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,4 @@ derby.log
 .nb-gradle-properties
 .nb-gradle
 .gradletasknamecache
-
+private/cache


[3/5] zest-qi4j git commit: Remove spurious gradle wrapper files

Posted by pa...@apache.org.
Remove spurious gradle wrapper files


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/be281c10
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/be281c10
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/be281c10

Branch: refs/heads/develop
Commit: be281c10a537ab204776918e34439471f22b0d41
Parents: d7924da
Author: Paul Merlin <pa...@apache.org>
Authored: Tue Apr 28 08:36:45 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Tue Apr 28 08:36:45 2015 +0200

----------------------------------------------------------------------
 libraries/wrapper/gradle-wrapper.jar        | Bin 12292 -> 0 bytes
 libraries/wrapper/gradle-wrapper.properties |  11 -----------
 2 files changed, 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/be281c10/libraries/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/libraries/wrapper/gradle-wrapper.jar b/libraries/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 14e0c25..0000000
Binary files a/libraries/wrapper/gradle-wrapper.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/be281c10/libraries/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/libraries/wrapper/gradle-wrapper.properties b/libraries/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 3948108..0000000
--- a/libraries/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-#Sun Nov 14 18:18:06 CST 2010
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-#distributionVersion=0.9-rc-1
-#urlRoot=http\://dist.codehaus.org/gradle
-distributionVersion=0.9
-urlRoot=http\://gradle.artifactoryonline.com/gradle/distributions
-distributionName=gradle
-distributionClassifier=bin


[2/5] zest-qi4j git commit: Minor enhancements/fixes in the project's DOAP file

Posted by pa...@apache.org.
Minor enhancements/fixes in the project's DOAP file


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/d7924da0
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/d7924da0
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/d7924da0

Branch: refs/heads/develop
Commit: d7924da04a6e1f3b3ca44400a49dbbc3df511bd8
Parents: 46d34a5
Author: Paul Merlin <pa...@apache.org>
Authored: Tue Apr 28 08:36:21 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Tue Apr 28 08:36:21 2015 +0200

----------------------------------------------------------------------
 doap.rdf | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/d7924da0/doap.rdf
----------------------------------------------------------------------
diff --git a/doap.rdf b/doap.rdf
index 77e74c3..c39ac4b 100644
--- a/doap.rdf
+++ b/doap.rdf
@@ -30,7 +30,7 @@
 
   =======================================================================
 -->
-  <Project rdf:about="http://zest.rdf.apache.org/">
+  <Project rdf:about="http://zest.apache.org/">
     <created>2008-12-17</created>
     <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
     <name>Apache Zest</name>
@@ -45,8 +45,8 @@
     between layers are controlled/enforced.
     </description>
     <bug-database rdf:resource="http://issues.apache.org/jira/browse/ZEST" />
-    <mailing-list rdf:resource="http://zest.apache.org/mailing-lists.html" />
-    <download-page rdf:resource="http://zest.apache.org/download.html" />
+    <mailing-list rdf:resource="http://zest.apache.org/community/get_help.html" />
+    <download-page rdf:resource="http://zest.apache.org/downloads.html" />
 
     <programming-language>Java</programming-language>
     <programming-language>C#</programming-language>
@@ -54,6 +54,12 @@
     <programming-language>Ruby</programming-language>
     <programming-language>Scala</programming-language>
     <category rdf:resource="http://projects.apache.org/category/osgi" />
+    <repository>
+      <GitRepository>
+        <location rdf:resource="https://github.com/apache/zest-qi4j.git"/>
+        <browse rdf:resource="https://github.com/apache/zest-qi4j"/>
+      </GitRepository>
+    </repository>
     <maintainer>
       <foaf:Person>
         <foaf:name>Niclas Hedhman</foaf:name>


[5/5] zest-qi4j git commit: Build: add a `rat` task that runs Apache Rat on the whole codebase

Posted by pa...@apache.org.
Build: add a `rat` task that runs Apache Rat on the whole codebase

It is not tied to the `check` task yet as it fails.
HTML report is generated into `build/rat`


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/fd0c2126
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/fd0c2126
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/fd0c2126

Branch: refs/heads/develop
Commit: fd0c2126af51ab4f984f3fbf0b3a8352b968ea7d
Parents: c465b16
Author: Paul Merlin <pa...@apache.org>
Authored: Tue Apr 28 08:44:07 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Tue Apr 28 08:44:07 2015 +0200

----------------------------------------------------------------------
 build.gradle                      |  43 +++++++
 etc/apache-rat-output-to-html.xsl | 204 +++++++++++++++++++++++++++++++++
 gradle/apache-rat.gradle          | 117 +++++++++++++++++++
 3 files changed, 364 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/fd0c2126/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 20f215e..706823b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,6 +27,49 @@ project.ext {
 
 def releaseApprovedProjects = allprojects.findAll( { project ->  rootProject.ext.releaseSpec.satisfiedBy( project ) } )
 
+apply from: 'gradle/apache-rat.gradle'
+rat {
+    excludes = [
+        '**/.DS_Store/**',
+        'bin/**',
+        // Git Files
+        '**/.git/**',
+        '**/.gitignore',
+        // Gradle Wrapper
+        'gradle/wrapper/**',
+        'gradlew',
+        'gradlew.bat',
+        '**/.gradle/**',
+        // Build Output
+        '**/build/**',
+        // IDE Files
+        '**/.idea/**',
+        '**/*.iml',
+        '**/*.ipr',
+        '**/*.iws',
+        '**/.settings/**',
+        '**/.classpath',
+        '**/.project',
+        '**/.nb-gradle-properties',
+        '**/.gradletasknamecache',
+        '**/.nb-gradle/**',
+        '**/private/cache/**',
+        // Graphic Resources
+        '**/*.svg',
+        '**/*.gif',
+        '**/*.png',
+        '**/*.jpg',
+        '**/*.psd',
+        // Syntax Highlighter - MIT
+        'manual/**/sh*.css',
+        'manual/**/sh*.js',
+        // jQuery & plugins - MIT
+        'manual/**/jquery*.js',
+        // Keystores
+        '**/*.jceks',
+    ]
+}
+
 buildscript {
   repositories {
     mavenCentral()

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/fd0c2126/etc/apache-rat-output-to-html.xsl
----------------------------------------------------------------------
diff --git a/etc/apache-rat-output-to-html.xsl b/etc/apache-rat-output-to-html.xsl
new file mode 100644
index 0000000..dcf19c5
--- /dev/null
+++ b/etc/apache-rat-output-to-html.xsl
@@ -0,0 +1,204 @@
+<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+
+<!--***********************************************************
+ *
+ * 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.
+ *
+ ***********************************************************-->
+
+<!-- This style sheet converts any rat-report.xml file.  -->
+
+<xsl:template match="/">
+
+  <html>
+    <head>
+     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+     <style type="text/css">
+    &lt;!--
+body {margin-top: 0px;font-size: 0.8em;background-color: #F9F7ED;}
+
+h1 {color:red;}
+h2 {color:blue;}
+h3 {color:green;}
+h4 {color:orange;}
+
+/* Table Design */
+
+table,tr,td {text-align:center;font-weight:bold;border:1px solid #000;}
+caption {color:blue;text-align:left;}
+.notes, .binaries, .archives, .standards {width:25%;}
+.notes {background:#D7EDEE;}
+.binaries {background:#D0F2F4;}
+.archives {background:#ABE7E9;}
+.standards {background:#A0F0F4;}
+.licenced, .generated {width:50%;}
+.licenced {background:#C6EBDD;}
+.generated {background:#ABE9D2;}
+.java_note {background:#D6EBC6;}
+.generated_note {background:#C9E7A9;}
+.unknown {width:100%;background:#E92020;}
+.unknown-zero {color:#00CC00;}
+.center{text-align:center;margin:0 auto;}
+--&gt;
+     </style>
+    </head>
+    <body>
+      <xsl:apply-templates/>
+      <xsl:call-template name="generated"/>
+    </body>
+  </html>
+</xsl:template>
+
+<xsl:template match="rat-report">
+
+  <h1>Rat Report</h1>
+<div class="center">
+<table id="rat-reports summary" cellspacing="0" summary="A snapshot summary of this rat report">
+<caption>
+Table 1: A snapshot summary of this rat report.
+</caption>
+  <tr>
+    <td colspan="1" class="notes">Notes: <xsl:value-of select="count(descendant::type[attribute::name=&quot;notice&quot;])"/></td>
+    <td colspan="1" class="binaries">Binaries: <xsl:value-of select="count(descendant::type[attribute::name=&quot;binary&quot;])"/></td>
+    <td colspan="1" class="archives">Archives: <xsl:value-of select="count(descendant::type[attribute::name=&quot;archive&quot;])"/></td>
+    <td colspan="1" class="standards">Standards: <xsl:value-of select="count(descendant::type[attribute::name=&quot;standard&quot;])"/></td>
+  </tr>
+  <tr>
+    <td colspan="2" class="licenced">Apache Licensed: <xsl:value-of select="count(descendant::header-type[attribute::name=&quot;AL   &quot;])"/></td>
+    <td colspan="2" class="generated">Generated Documents: <xsl:value-of select="count(descendant::header-type[attribute::name=&quot;GEN  &quot;])"/></td>
+  </tr>
+  <tr>
+    <td colspan="2" class="java_note">Note: JavaDocs are generated and so license header is optional</td>
+    <td colspan="2" class="generated_note">Note: Generated files do not require license headers</td>
+  </tr>
+  <tr>
+<xsl:choose>
+  <xsl:when test="count(descendant::header-type[attribute::name=&quot;?????&quot;]) &gt; 0">
+    <td colspan="4" class="unknown"><xsl:value-of select="count(descendant::header-type[attribute::name=&quot;?????&quot;])"/> Unknown Licenses - or files without a license.</td>
+  </xsl:when>
+  <xsl:otherwise>
+    <td colspan="4" class="unknown-zero"><xsl:value-of select="count(descendant::header-type[attribute::name=&quot;?????&quot;])"/> Unknown Licenses - or files without a license.</td>
+  </xsl:otherwise>
+</xsl:choose>
+  </tr>
+</table>
+</div>
+<hr/>
+  <h3>Unapproved Licenses:</h3>
+
+  <xsl:for-each select="descendant::resource[license-approval/@name=&quot;false&quot;]">
+  <xsl:text>  </xsl:text>
+  <xsl:value-of select="@name"/><br/>
+  <xsl:text>
+</xsl:text>
+</xsl:for-each>
+<hr/>
+
+<h3>Archives:</h3>
+
+<xsl:for-each select="descendant::resource[type/@name=&quot;archive&quot;]">
+ + <xsl:value-of select="@name"/>
+ <br/>
+ </xsl:for-each>
+ <hr/>
+
+ <p>
+   Files with Apache License headers will be marked AL<br/>
+   Binary files (which do not require AL headers) will be marked B<br/>
+  Compressed archives will be marked A<br/>
+  Notices, licenses etc will be marked N<br/>
+  </p>
+
+ <xsl:for-each select="descendant::resource">
+  <xsl:choose>
+   <xsl:when test="license-approval/@name=&quot;false&quot;">!</xsl:when>
+   <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+   <xsl:when test="type/@name=&quot;notice&quot;">N   </xsl:when>
+   <xsl:when test="type/@name=&quot;archive&quot;">A   </xsl:when>
+   <xsl:when test="type/@name=&quot;binary&quot;">B   </xsl:when>
+   <xsl:when test="type/@name=&quot;standard&quot;"><xsl:value-of select="header-type/@name"/></xsl:when>
+   <xsl:otherwise>!!!!!</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>      </xsl:text>
+ <xsl:value-of select="@name"/><br/>
+ <xsl:text>
+ </xsl:text>
+ </xsl:for-each>
+ <hr/>
+
+ <h3>Printing headers for files without AL header...</h3>
+
+ <xsl:for-each select="descendant::resource[header-type/@name=&quot;?????&quot;]">
+
+   <h4><xsl:value-of select="@name"/></h4>
+  <xsl:value-of select="header-sample"/>
+  <hr/>
+</xsl:for-each>
+<br/>
+
+ <!-- <xsl:apply-templates select="resource"/>
+    <xsl:apply-templates select="header-sample"/>
+    <xsl:apply-templates select="header-type"/>
+    <xsl:apply-templates select="license-family"/>
+    <xsl:apply-templates select="license-approval"/>
+    <xsl:apply-templates select="type"/> -->
+
+</xsl:template>
+
+<xsl:template match="resource">
+  <div>
+    <h3>Resource: <xsl:value-of select="@name"/></h3>
+      <xsl:apply-templates/>
+    </div>
+</xsl:template>
+
+<xsl:template match="header-sample">
+  <xsl:if test="normalize-space(.) != ''">
+  <h4>First few lines of non-compliant file</h4>
+    <p>
+      <xsl:value-of select="."/>
+    </p>
+    </xsl:if>
+    <h4>Other Info:</h4>
+</xsl:template>
+
+<xsl:template match="header-type">
+  Header Type: <xsl:value-of select="@name"/>
+  <br/>
+</xsl:template>
+
+<xsl:template match="license-family">
+  License Family: <xsl:value-of select="@name"/>
+  <br/>
+</xsl:template>
+
+<xsl:template match="license-approval">
+  License Approval: <xsl:value-of select="@name"/>
+  <br/>
+</xsl:template>
+
+<xsl:template match="type">
+  Type: <xsl:value-of select="@name"/>
+  <br/>
+</xsl:template>
+
+<xsl:template name="generated">
+</xsl:template>
+</xsl:transform>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/fd0c2126/gradle/apache-rat.gradle
----------------------------------------------------------------------
diff --git a/gradle/apache-rat.gradle b/gradle/apache-rat.gradle
new file mode 100644
index 0000000..dc0bcd6
--- /dev/null
+++ b/gradle/apache-rat.gradle
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.internal.project.IsolatedAntBuilder
+
+apply plugin: RatPlugin
+
+class RatTask extends DefaultTask {
+    @Input
+    List<String> excludes
+
+    def reportPath = 'build/rat'
+    def stylesheet = 'etc/apache-rat-output-to-html.xsl'
+    def xmlReport = reportPath + '/rat-report.xml'
+    def htmlReport = reportPath + '/rat-report.html'
+
+    def generateXmlReport(File reportDir) {
+        def antBuilder = services.get(IsolatedAntBuilder)
+        def ratClasspath = project.configurations.rat
+        antBuilder.withClasspath(ratClasspath).execute {
+            ant.taskdef(resource: 'org/apache/rat/anttasks/antlib.xml')
+            ant.report(format: 'xml', reportFile: xmlReport) {
+                fileset(dir: ".") {
+                    patternset {
+                        excludes.each { exclude(name: it) }
+                    }
+                }
+            }
+        }
+    }
+
+    def printUnknownFiles() {
+        def ratXml = new XmlParser().parse(xmlReport)
+        def unknownLicenses = 0
+        ratXml.resource.each { resource ->
+            if (resource.'license-approval'.@name[0] == "false") {
+                println('Unknown license: ' + resource.@name)
+                unknownLicenses++
+            }
+        }
+        return unknownLicenses
+    }
+
+    def generateHtmlReport() {
+        def antBuilder = services.get(IsolatedAntBuilder)
+        def ratClasspath = project.configurations.rat
+        antBuilder.withClasspath(ratClasspath).execute {
+            ant.xslt(
+                in: xmlReport,
+                style: stylesheet,
+                out: htmlReport,
+                classpath: ratClasspath
+            )
+        }
+        println('Rat report: ' + htmlReport)
+    }
+
+    @TaskAction
+    def rat() {
+        File reportDir = new File(reportPath)
+        if (!reportDir.exists()) {
+            reportDir.mkdirs()
+        }
+        generateXmlReport(reportDir)
+        def errorCount = printUnknownFiles()
+        generateHtmlReport()
+        if (errorCount > 0) {
+            throw new GradleException("Found $errorCount files with unknown licenses.")
+        }
+    }
+}
+
+class RatPlugin implements Plugin<Project> {
+    void apply(Project project) {
+        configureDependencies(project)
+        project.plugins.apply(JavaBasePlugin);
+        Task ratTask = project.task(
+            'rat',
+            type: RatTask,
+            group: 'Apache',
+            description: 'Runs Apache Rat checks.'
+        )
+        // TODO Uncomment this to hook into `check` tasks
+        // project.tasks[JavaBasePlugin.CHECK_TASK_NAME].dependsOn ratTask
+    }
+
+    void configureDependencies(final Project project) {
+        project.configurations {
+            rat
+        }
+        project.repositories {
+            mavenCentral()
+        }
+        project.dependencies {
+            rat 'org.apache.rat:apache-rat-tasks:0.11'
+        }
+    }
+}


[4/5] zest-qi4j git commit: Add KEYS file at project's root

Posted by pa...@apache.org.
Add KEYS file at project's root

Niclas and Paul keys are in


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/c465b160
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/c465b160
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/c465b160

Branch: refs/heads/develop
Commit: c465b160c4af67e9396d13e3e32618f0f91fcea9
Parents: be281c1
Author: Paul Merlin <pa...@apache.org>
Authored: Tue Apr 28 08:40:38 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Tue Apr 28 08:40:38 2015 +0200

----------------------------------------------------------------------
 KEYS | 258 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 258 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/c465b160/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
new file mode 100644
index 0000000..1aa2d38
--- /dev/null
+++ b/KEYS
@@ -0,0 +1,258 @@
+This file contains the GPG keys of Apache Zest developers.
+
+Users:    gpg --import KEYS
+
+Developers:
+  Create a key:
+    gpg --gen-key
+
+  Adding you key to this file:
+    (gpg --list-sigs <key id> && gpg --armor --export <key id>) >> this file.
+
+  Publish the key:
+    gpg --keyserver pgp.mit.edu --send-keys <key id>
+
+  Signing another developers key:
+    gpg --keyserver pgp.mit.edu --search-keys <name or email>
+    gpg --keyserver pgp.mit.edu --recv-keys <other key id>
+    gpg -u <your key id> --sign-key <other key id>
+    gpg --keyserver pgp.mit.edu --send-keys <other key id>
+
+  Additional Information:
+    http://www.apache.org/dev/openpgp.html#generate-key
+
+********************************* PLEASE NOTE **********************************
+
+  Releases will be signed using one of the keys present in this file. This file
+  will be available with the distributed Apache Zest releases at:
+
+      https://dist.apache.org/repos/dist/zest/KEYS
+
+********************************************************************************
+
+pub   4096R/32D40AD6 2009-09-19
+uid                  Niclas Hedhman <ni...@hedhman.org>
+sig 3        32D40AD6 2009-09-19  Niclas Hedhman <ni...@hedhman.org>
+sig          33D70FC3 2009-09-19  [User ID not found]
+sig          B071346D 2009-09-19  [User ID not found]
+sig          7D0391AC 2015-04-27  Paul Merlin (Apache) <pa...@apache.org>
+uid                  Niclas Hedhman (Apache Code Signing Key) <ni...@apache.org>
+sig 3        32D40AD6 2009-09-19  Niclas Hedhman <ni...@hedhman.org>
+sig          7D0391AC 2015-04-27  Paul Merlin (Apache) <pa...@apache.org>
+sub   4096R/31AAEB75 2009-09-19
+sig          32D40AD6 2009-09-19  Niclas Hedhman <ni...@hedhman.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
+
+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
+jTyg19IQRme7
+=plln
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+pub   8192R/7D0391AC 2015-04-27
+uid                  Paul Merlin (Apache) <pa...@apache.org>
+sig 3        7D0391AC 2015-04-27  Paul Merlin (Apache) <pa...@apache.org>
+sub   8192R/091BA717 2015-04-27
+sig          7D0391AC 2015-04-27  Paul Merlin (Apache) <pa...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
+
+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
+=k7KG
+-----END PGP PUBLIC KEY BLOCK-----