yetus-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bus...@apache.org
Subject [06/13] yetus git commit: git hash 834d7a470993b38be81287c8d5a79763194da4f6
Date Thu, 02 Nov 2017 04:23:19 GMT
http://git-wip-us.apache.org/repos/asf/yetus/blob/7e0fd8e4/documentation/0.6.0/audience-annotations-apidocs/script.js
----------------------------------------------------------------------
diff --git a/documentation/0.6.0/audience-annotations-apidocs/script.js b/documentation/0.6.0/audience-annotations-apidocs/script.js
new file mode 100644
index 0000000..b346356
--- /dev/null
+++ b/documentation/0.6.0/audience-annotations-apidocs/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+    count = 0;
+    for (var key in methods) {
+        var row = document.getElementById(key);
+        if ((methods[key] &  type) != 0) {
+            row.style.display = '';
+            row.className = (count++ % 2) ? rowColor : altColor;
+        }
+        else
+            row.style.display = 'none';
+    }
+    updateTabs(type);
+}
+
+function updateTabs(type)
+{
+    for (var value in tabs) {
+        var sNode = document.getElementById(tabs[value][0]);
+        var spanNode = sNode.firstChild;
+        if (value == type) {
+            sNode.className = activeTableTab;
+            spanNode.innerHTML = tabs[value][1];
+        }
+        else {
+            sNode.className = tableTab;
+            spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/yetus/blob/7e0fd8e4/documentation/0.6.0/audience-annotations-apidocs/stylesheet.css
----------------------------------------------------------------------
diff --git a/documentation/0.6.0/audience-annotations-apidocs/stylesheet.css b/documentation/0.6.0/audience-annotations-apidocs/stylesheet.css
new file mode 100644
index 0000000..98055b2
--- /dev/null
+++ b/documentation/0.6.0/audience-annotations-apidocs/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+@import url('resources/fonts/dejavu.css');
+
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:14px;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4A6782;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4A6782;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+}
+h1 {
+    font-size:20px;
+}
+h2 {
+    font-size:18px;
+}
+h3 {
+    font-size:16px;
+    font-style:italic;
+}
+h4 {
+    font-size:13px;
+}
+h5 {
+    font-size:12px;
+}
+h6 {
+    font-size:11px;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+    margin-top:8px;
+    line-height:1.4em;
+}
+dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+}
+table tr td dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    vertical-align:top;
+    padding-top:4px;
+}
+sup {
+    font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:11px;
+    z-index:200;
+    margin-top:-9px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:11px;
+    margin:0;
+}
+.topNav {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px; 
+}
+.bottomNav {
+    margin-top:10px;
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav {
+    background-color:#dee3e9;
+    float:left;
+    width:100%;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+    text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding: 5px 6px;
+    text-transform:uppercase;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+    text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+    text-transform:uppercase;
+}
+.navBarCell1Rev {
+    background-color:#F8981D;
+    color:#253441;
+    margin: auto 5px;
+}
+.skipNav {
+    position:absolute;
+    top:auto;
+    left:-9999px;
+    overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader span{
+    margin-right:15px;
+}
+.indexHeader h1 {
+    font-size:13px;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 15px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:12px;
+}
+.indexContainer h2 {
+    font-size:13px;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+    padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:12px;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:5px 0 10px 0px;
+    font-size:14px;
+    font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:15px;
+    line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #ededed; 
+    background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+    width:100%;
+    border-left:1px solid #EEE; 
+    border-right:1px solid #EEE; 
+    border-bottom:1px solid #EEE; 
+}
+.overviewSummary, .memberSummary  {
+    padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#253441;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    padding-top:10px;
+    padding-left:1px;
+    margin:0px;
+    white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    padding-bottom:7px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    border: none;
+    height:16px;
+}
+.memberSummary caption span.activeTableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    height:16px;
+}
+.memberSummary caption span.tableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#4D7A97;
+    height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+    padding-top:0px;
+    padding-left:0px;
+    padding-right:0px;
+    background-image:none;
+    float:none;
+    display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+    display:none;
+    width:5px;
+    position:relative;
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative; 
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative;
+    background-color:#4D7A97;
+    float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+    text-align:left;
+    padding:0px 0px 12px 10px;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+    vertical-align:top;
+    padding-right:0px;
+    padding-top:8px;
+    padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+    white-space:nowrap;
+    font-size:13px;
+}
+td.colLast, th.colLast {
+    font-size:13px;
+}
+td.colOne, th.colOne {
+    font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.useSummary td.colFirst, .useSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+    width:25%;
+    vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+.tableSubHeadingColor {
+    background-color:#EEEEFF;
+}
+.altColor {
+    background-color:#FFFFFF;
+}
+.rowColor {
+    background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    font-style:normal;
+}
+
+div.block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+    padding-top:0px;
+}
+
+
+td.colLast a {
+    padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:10px;
+}
+.block {
+    display:block;
+    margin:3px 10px 2px 0px;
+    color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+    font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+    font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+    font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+    padding-bottom:0px;
+}

http://git-wip-us.apache.org/repos/asf/yetus/blob/7e0fd8e4/documentation/0.6.0/index.html
----------------------------------------------------------------------
diff --git a/documentation/0.6.0/index.html b/documentation/0.6.0/index.html
new file mode 100644
index 0000000..ed3a48c
--- /dev/null
+++ b/documentation/0.6.0/index.html
@@ -0,0 +1,182 @@
+<!---
+  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>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="description" content="">
+        <meta name="author" content="">
+
+        <link href="/assets/css/bootstrap.css" rel="stylesheet">
+        <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+        <!-- JS -->
+        <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+        <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+  </head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu">
+                      <li><a href="/documentation/0.4.0/">Docs for v0.4.0</a></li>
+                      <li><a href="/documentation/0.5.0/">Docs for v0.5.0</a></li>
+                      <li><a href="/documentation/0.6.0/">Docs for v0.6.0</a></li>
+                      <li><a href="/documentation/in-progress/">In Progress Docs for Contributors</a>
+                      </li>
+                    </ul>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute/"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache 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>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+  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.
+-->
+
+<h1 id="yetus-precommit">Yetus Precommit</h1>
+
+<p>The Yetus Precommit Patch Tester allows projects to codify their patch acceptance criteria and then evaluate incoming contributions prior to review by a committer.</p>
+
+<ul>
+<li>Take a quick look at <a href="precommit-glossary">our glossary of terms</a> to ensure you are familiar with the ASF and Maven jargon we&rsquo;ll use as terminology specific to this project.</li>
+<li>For an overview of Yetus&rsquo; philosophy on testing contributions and how evaluation is performed, see our <a href="precommit-architecture">overview</a>.</li>
+<li>To get started on your project, including an explanation of what we&rsquo;ll expect in a runtime environment and what optional utilities we&rsquo;ll leverage, read through the <a href="precommit-basic">basic usage guide</a>.</li>
+<li>Customize how precommit interacts with your project by choosing amongst <a href="precommit-buildtools">build systems</a>, <a href="precommit-bugsystems">bug systems</a> and <a href="precommit-testformats">test formats</a>.</li>
+<li>If your project has advanced requirements such as module relationships not expressed in Maven, special profiles, or a need on os-specific prerequisites not managed by Maven then you&rsquo;ll need to use our <a href="precommit-advanced">advanced usage guide</a>.</li>
+</ul>
+
+<p>For a complete guide to the Precommit API, see <a href="precommit-apidocs/">the generated API documentation</a>.</p>
+
+<h1 id="yetus-release-doc-maker">Yetus Release Doc Maker</h1>
+
+<p>The Release Documentation Maker allows projects to generate nicely formated Markdown Changelogs and Release Notes based upon JIRA. You can view that
+documenation <a href="releasedocmaker">here</a>.</p>
+
+<h1 id="yetus-shelldocs">Yetus Shelldocs</h1>
+
+<p>Shelldocs provides generation of html formatted api documentation based on comments on Bash functions. Currently supports documenting API status (public / private) as well as parameters and return values.</p>
+
+<p>See the shelldocs cli help for more information on usage.</p>
+<pre class="highlight shell"><code><span class="gp">$ </span>./shelldocs/shelldocs.py --help
+Usage: shelldocs.py --skipprnorep --output OUTFILE --input INFILE <span class="o">[</span>--input INFILE ...]
+
+Options:
+  -h, --help            show this <span class="nb">help </span>message and <span class="nb">exit</span>
+  -o OUTFILE, --output<span class="o">=</span>OUTFILE
+                        file to create
+  -i INFILE, --input<span class="o">=</span>INFILE
+                        file to <span class="nb">read</span>
+  --skipprnorep         Skip Private &amp; Not Replaceable
+</code></pre>
+<p>You can mark a file to be ignored by shelldocs by adding <q>SHELLDOC-IGNORE</q> as a comment in its own line.</p>
+
+<h1 id="yetus-audience-annotations">Yetus Audience Annotations</h1>
+
+<p>Audience Annotations allows you to use Java Annotations to denote which parts of your Java library is publicly consumable and which parts are reserved for a more restricted use. It also provides doclets and examples for generating javadocs limited by audience.
+You can refer the user documentation <a href="interface-classification">here</a> and the javadocs <a href="audience-annotations-apidocs/">here</a>.</p>
+
+    </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+              <div class="span12">
+                Copyright 2008-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+              </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/yetus/blob/7e0fd8e4/documentation/0.6.0/interface-classification/index.html
----------------------------------------------------------------------
diff --git a/documentation/0.6.0/interface-classification/index.html b/documentation/0.6.0/interface-classification/index.html
new file mode 100644
index 0000000..c9247fe
--- /dev/null
+++ b/documentation/0.6.0/interface-classification/index.html
@@ -0,0 +1,344 @@
+<!---
+  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>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="description" content="">
+        <meta name="author" content="">
+
+        <link href="/assets/css/bootstrap.css" rel="stylesheet">
+        <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+        <!-- JS -->
+        <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+        <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+  </head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu">
+                      <li><a href="/documentation/0.4.0/">Docs for v0.4.0</a></li>
+                      <li><a href="/documentation/0.5.0/">Docs for v0.5.0</a></li>
+                      <li><a href="/documentation/0.6.0/">Docs for v0.6.0</a></li>
+                      <li><a href="/documentation/in-progress/">In Progress Docs for Contributors</a>
+                      </li>
+                    </ul>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute/"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache 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>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+  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. See accompanying LICENSE file.
+-->
+
+<h1 id="apache-yetus-interface-taxonomy-audience-and-stability-classification">Apache Yetus Interface Taxonomy: Audience and Stability Classification</h1>
+
+<h2 id="motivation">Motivation</h2>
+
+<p>The interface taxonomy classification provided by Apache Yetus annotations is for guidance to
+developers and users of interfaces. The classification guides a developer to
+declare the targeted audience or users of an interface and also its stability.</p>
+
+<ul>
+<li><p>Benefits to the user of an interface: Knows which interfaces to use or not use and their stability.</p></li>
+<li><p>Benefits to the developer: to prevent accidental changes of interfaces and
+hence accidental impact on users or other components or system. This is
+particularly useful in large systems with many developers who may not all have
+a shared state/history of the project.</p></li>
+</ul>
+
+<h2 id="interface-classification">Interface Classification</h2>
+
+<p>Yetus provides the following interface classification, derived from the
+<a href="http://web.archive.org/web/20061013114610/http://opensolaris.org/os/community/arc/policies/interface-taxonomy/">OpenSolaris taxonomy</a>
+and, to some extent, from taxonomy used inside Yahoo.
+Interfaces have two main attributes: Audience and Stability</p>
+
+<h3 id="audience">Audience</h3>
+
+<p>Audience denotes the potential consumers of the interface. While many interfaces
+are internal/private to the implementation, others are public/external interfaces
+and are meant for wider consumption by applications and/or clients. For example,
+POSIX definitions in libc are external, while large parts of the kernel are internal or private interfaces.
+Also, some interfaces are targeted towards other specific subsystems.</p>
+
+<p>Identifying the audience of an interface helps define the impact of breaking
+it. For instance, it might be okay to break the compatibility of an interface
+whose audience is a small number of specific subsystems. On the other hand, it
+is probably not okay to break a protocol interfaces that millions of Internet
+users depend on.</p>
+
+<p>Yetus uses the following kinds of audience in order of increasing/wider visibility:</p>
+
+<h4 id="private">Private</h4>
+
+<p>The interface is for internal use within a project(such as Apache Hadoop)
+and should not be used by applications or by other projects. It is subject to
+change at anytime without notice. Most interfaces of a project are Private (also
+referred to as project-private).</p>
+
+<h4 id="limited-private">Limited-Private</h4>
+
+<p>The interface is used by a specified set of projects or systems (typically
+closely related projects). Other projects or systems should not use the
+interface. Changes to the interface will be communicated/ negotiated with the
+specified projects. For example, in the Apache Hadoop project, some interfaces are
+LimitedPrivate{HDFS, MapReduce} in that they are private to the HDFS and
+MapReduce subprojects.</p>
+
+<h4 id="public">Public</h4>
+
+<p>The interface is for general use by any application.</p>
+
+<h3 id="stability">Stability</h3>
+
+<p>Stability denotes how stable an interface is, as in when incompatible changes to
+the interface are allowed. Yetus provides the following levels of stability.</p>
+
+<h4 id="stable">Stable</h4>
+
+<p>Can evolve while retaining compatibility for minor release boundaries; in other
+words, incompatible changes to APIs marked Stable are generally  only allowed
+at major releases (i.e. at m.0).</p>
+
+<h4 id="evolving">Evolving</h4>
+
+<p>Evolving, but incompatible changes are allowed at minor release (i.e. m .x)</p>
+
+<h4 id="unstable">Unstable</h4>
+
+<p>Incompatible changes to Unstable APIs are allowed any time. This usually makes
+sense for only private interfaces.</p>
+
+<p>However one may call this out for a supposedly public interface to highlight
+that it should not be used as an interface; for public interfaces, labeling it
+as Not-an-interface is probably more appropriate than <q>Unstable</q>.</p>
+
+<p>Examples of publicly visible interfaces that are unstable
+(i.e. not-an-interface): GUI, CLIs whose output format will change</p>
+
+<h4 id="deprecated">Deprecated</h4>
+
+<p>APIs that could potentially be removed in the future and should not be used.</p>
+
+<h2 id="how-are-the-classifications-recorded">How are the Classifications Recorded</h2>
+
+<p>How should the classification be recorded for the annotated APIs?</p>
+
+<ul>
+<li><p>Each interface or class will have the audience and stability recorded using
+annotations in org.apache.yetus.classification package.</p></li>
+<li><p>The javadoc generated by the maven target javadoc:javadoc lists only the public API.</p></li>
+<li><p>One can derive the audience of java classes and java interfaces by the
+audience of the package in which they are contained. Hence it is useful to
+declare the audience of each java package as public or private (along with the
+private audience variations).</p></li>
+</ul>
+
+<h2 id="faq">FAQ</h2>
+
+<ul>
+<li><p>Why aren&rsquo;t the java scopes (private, package private and public) good enough?</p>
+
+<ul>
+<li>Java&rsquo;s scoping is not very complete. One is often forced to make a class
+public in order for other internal components to use it. It does not have
+friends or sub-package-private like C++.</li>
+</ul></li>
+<li><p>But I can easily access a private implementation interface if it is Java public.
+Where is the protection and control?</p>
+
+<ul>
+<li>The purpose of this is not providing absolute access control. Its purpose
+is to communicate to users and developers. One can access private
+implementation functions in libc; however if they change the internal
+implementation details, your application will break and you will have
+little sympathy from the folks who are supplying libc. If you use a
+non-public interface you understand the risks.</li>
+</ul></li>
+<li><p>Why bother declaring the stability of a private interface?
+Aren&rsquo;t private interfaces always unstable?</p>
+
+<ul>
+<li>Private interfaces are not always unstable. In the cases where they are
+stable they capture internal properties of the system and can communicate
+these properties to its internal users and to developers of the interface.
+
+<ul>
+<li>e.g. In HDFS, NN-DN protocol is private but stable and can help
+implement rolling upgrades. It communicates that this interface should
+not be changed in incompatible ways even though it is private.</li>
+<li>e.g. In HDFS, FSImage stability can help provide more flexible roll backs.</li>
+</ul></li>
+</ul></li>
+<li><p>What is the harm in applications using a private interface that is stable? How
+is it different than a public stable interface?</p>
+
+<ul>
+<li>While a private interface marked as stable is targeted to change only at
+major releases, it may break at other times if the providers of that
+interface are willing to changes the internal users of that
+interface. Further, a public stable interface is less likely to break even
+at major releases (even though it is allowed to break compatibility)
+because the impact of the change is larger. If you use a private interface
+(regardless of its stability) you run the risk of incompatibility.</li>
+</ul></li>
+<li><p>Why bother with Limited-private? Isn&rsquo;t it giving special treatment to some projects?
+That is not fair.</p>
+
+<ul>
+<li>First, most interfaces should be public or private; actually let us state
+it even stronger: make it private unless you really want to expose it to
+public for general use.</li>
+<li>Limited-private is for interfaces that are not intended for general
+use. They are exposed to related projects that need special hooks. Such a
+classification has a cost to both the supplier and consumer of the limited
+interface. Both will have to work together if ever there is a need to
+break the interface in the future; for example the supplier and the
+consumers will have to work together to get coordinated releases of their
+respective projects. This should not be taken lightly - if you can get
+away with private then do so; if the interface is really for general use
+for all applications then you should consider making it public. But remember
+that making an interface public has huge responsibility. Sometimes
+Limited-private is just right.</li>
+<li>A good example of a limited-private interface is BlockLocations in the Apache
+Hadoop Project, This is fairly low-level interface that they are willing to
+expose to MR and perhaps HBase. They are likely to change it down the road
+and at that time they will have to get a coordinated effort with the MR
+team to release matching releases. While MR and HDFS are always released
+in sync today, they may change down the road.</li>
+<li>If you have a limited-private interface with many projects listed then you
+are fooling yourself. It is practically public.</li>
+<li>It might be worth declaring a special audience classification called
+{YourProjectName}-Private for your closely related projects.</li>
+</ul></li>
+<li><p>Can&rsquo;t a private interface be treated as project-private also? For example what is
+the harm in projects in the Apache Hadoop extended ecosystem, having access to
+private classes?</p>
+
+<ul>
+<li>Do we want MR accessing class files that are implementation details inside
+HDFS? There used to be many such layer violations in the Apache Hadoop
+project that they have been cleaning up over the last few years. It is highly
+undesirable for such layer violations to creep back in by no separation
+between the major components like HDFS and MR.</li>
+</ul></li>
+<li><p>Aren&rsquo;t all public interfaces stable?</p>
+
+<ul>
+<li>One may mark a public interface as evolving in its early days. Here one is
+promising to make an effort to make compatible changes but may need to
+break it at minor releases.</li>
+<li>One example of a public interface that is unstable is where one is
+providing an implementation of a standards-body based interface that is
+still under development. For example, many companies, in an attempt to be
+first to market, have provided implementations of a new NFS protocol even
+when the protocol was not fully completed by IETF. The implementor cannot
+evolve the interface in a fashion that causes least disruption because
+the stability is controlled by the standards body. Hence it is appropriate
+to label the interface as unstable.</li>
+</ul></li>
+</ul>
+
+    </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+              <div class="span12">
+                Copyright 2008-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+              </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/yetus/blob/7e0fd8e4/documentation/0.6.0/precommit-advanced/index.html
----------------------------------------------------------------------
diff --git a/documentation/0.6.0/precommit-advanced/index.html b/documentation/0.6.0/precommit-advanced/index.html
new file mode 100644
index 0000000..b44186f
--- /dev/null
+++ b/documentation/0.6.0/precommit-advanced/index.html
@@ -0,0 +1,405 @@
+<!---
+  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>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="description" content="">
+        <meta name="author" content="">
+
+        <link href="/assets/css/bootstrap.css" rel="stylesheet">
+        <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+        <!-- JS -->
+        <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+        <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+  </head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu">
+                      <li><a href="/documentation/0.4.0/">Docs for v0.4.0</a></li>
+                      <li><a href="/documentation/0.5.0/">Docs for v0.5.0</a></li>
+                      <li><a href="/documentation/0.6.0/">Docs for v0.6.0</a></li>
+                      <li><a href="/documentation/in-progress/">In Progress Docs for Contributors</a>
+                      </li>
+                    </ul>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute/"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache 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>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+  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.
+-->
+
+<h1 id="test-patch">test-patch</h1>
+
+<ul>
+<li><a href="#docker-support">Docker Support</a></li>
+<li><a href="#plug-ins">Plug-ins</a></li>
+<li><a href="#personalities">Personalities</a></li>
+<li><a href="#important-variables">Important Variables</a></li>
+</ul>
+
+<h1 id="docker-support">Docker Support</h1>
+
+<p>By default, test-patch runs in the same shell where it was launched.  It can alternatively use Docker to launch itself in a container.  This is particularly useful if running under a QA environment that does not provide all the necessary binaries. For example, if the patch requires a newer version of Java than what is installed on a Jenkins instance.</p>
+
+<p>The <code>--docker</code> parameter tells test-patch to run in Docker mode. The <code>--dockerfile</code> parameter allows one to provide a custom Dockerfile. The Dockerfile should contain all of the necessary binaries and tooling needed to run the test.  test-patch will copy this file up until the text <q>YETUS CUT HERE</q> to a different directory and then append its necessary hooks to re-launch itself prior to executing docker.</p>
+
+<p>If a custom Dockerfile cannot be used or the docker executable does not work, test-patch will attempt to recover by switching to its bundled Dockerfile or disabling docker support and running locally.  This behavior can be changed with the <code>--dockeronfail</code> option.  It takes a list of comma-delimited settings:</p>
+
+<ul>
+<li>fallback - Use the bundled Dockerfile</li>
+<li>continue - Turn off docker support</li>
+<li>fail - fail the test</li>
+</ul>
+
+<p>The &lsquo;fail&rsquo; setting is always the last option that test-patch will use and may be omitted unless it is the only option.</p>
+
+<p>For example, <code>--dockeronfail=continue</code> means if the Dockerfile can&rsquo;t be found, just turn off Docker support and continue running.  <code>--dockeronfail=fallback</code> will switch to the bundled Dockerfile and then fail the build if docker fails to work. <code>--dockeronfail=fail</code> means to just fail the build and do not try any other mechanisms of recovery. The default is &lsquo;fallback,continue,fail&rsquo; which will allow test-patch to try to continue executing as much as it possibily can.</p>
+
+<p>Be aware that if the Dockerfile is found and the docker command works, test-patch will always fail the build if the Dockerfile itself fails the build.  It will not attempt to continue in the non-Docker mode.</p>
+
+<p>NOTE: If you are using Boot2Docker, you must use directories under /Users (OSX) or C:\Users (Windows) as the base and patchprocess directories (specified by the &ndash;basedir and &ndash;patch-dir options respectively), because automatically mountable directories are limited to them. See <a href="https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume">the Docker documentation</a>.</p>
+
+<p>Dockerfile images will be named with a test-patch prefix and suffix with either a date or a git commit hash. By using this information, test-patch will automatically manage broken/stale container images that are hanging around if it is run in &ndash;robot mode.  In this way, if Docker fails to build the image, the disk space should eventually be cleaned and returned back to the system.  The docker mode can also be run in a <q>safe</q> mode that prevents deletions via the <code>--dockerdelrep</code> option.  Specifying this option will cause test-patch to only report what it would have deleted, but not actually remove anything.</p>
+
+<h1 id="plug-ins">Plug-ins</h1>
+
+<p>test-patch allows one to add to its basic feature set via plug-ins.  There is a directory called test-patch.d inside the directory where test-patch.sh lives.  Inside this directory one may place some bash shell fragments that, if setup with proper functions, will allow for test-patch to call it as necessary.  Different plug-ins have specific functions for that particular functionality.  In this document, the common functions available to all/most plug-ins are covered.  Test plugins are covered below. See other documentation for pertinent information for the other plug-in types.</p>
+
+<h2 id="common-plug-in-functions">Common Plug-in Functions</h2>
+
+<p>Every plug-in must have one line in order to be recognized, usually an &lsquo;add&rsquo; statement.  Test plug-ins, for example, have this statement:</p>
+<pre class="highlight shell"><code>add_test_type &lt;pluginname&gt;
+</code></pre>
+<p>This function call registers the <code>pluginname</code> so that test-patch knows that it exists.  Plug-in names must be unique across all the different plug-in types.  Additionally, the &lsquo;all&rsquo; plug-in is reserved.  The <code>pluginname</code> also acts as the key to the custom functions that you can define. For example:</p>
+<pre class="highlight shell"><code><span class="k">function </span>pluginname_filefilter
+</code></pre>
+<p>defines the filefilter for the <code>pluginname</code> plug-in.</p>
+
+<p>Similarly, there are other functions that may be defined during the test-patch run:</p>
+<pre class="highlight plaintext"><code>HINT: It is recommended to make the pluginname relatively small, 10 characters at the most.  Otherwise, the ASCII output table may be skewed.
+</code></pre>
+<ul>
+<li><p>pluginname_usage</p>
+
+<ul>
+<li>executed when the help message is displayed. This is used to display the plug-in specific options for the user.</li>
+</ul></li>
+<li><p>pluginname_parse_args</p>
+
+<ul>
+<li>executed prior to any other above functions except for pluginname_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.</li>
+</ul></li>
+<li><p>pluginname_initialize</p>
+
+<ul>
+<li>After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.</li>
+</ul></li>
+<li><p>pluginname_docker_support</p>
+
+<ul>
+<li>Perform any necessary setup to configure Docker support for the given plugin.  Typically this means adding parameters to the docker run command line via adding to the DOCKER_EXTRAARGS array.</li>
+</ul></li>
+<li><p>pluginname_precheck</p>
+
+<ul>
+<li>executed prior to the patch being applied but after the git repository is setup.  Returning a fail status here will exit test-patch.</li>
+</ul></li>
+<li><p>pluginname_patchfile</p>
+
+<ul>
+<li>executed prior to the patch being applied but after the git repository is setup. This step is intended to perform tests on the content of the patch itself.</li>
+</ul></li>
+<li><p>pluginname_precompile</p>
+
+<ul>
+<li>executed prior to the compilation part of the lifecycle. This is useful for doing setup work required by the compilation process.</li>
+</ul></li>
+<li><p>pluginname_postcompile</p>
+
+<ul>
+<li>This step happens after the compile phase.</li>
+</ul></li>
+<li><p>pluginname_rebuild</p>
+
+<ul>
+<li>Any non-unit tests that require the source to be rebuilt in a destructive way should be run here.</li>
+</ul></li>
+</ul>
+
+<h2 id="plug-in-importation">Plug-in Importation</h2>
+
+<p>Plug-ins are imported from several key directories:</p>
+
+<ul>
+<li><p>core.d is an internal-to-Yetus directory that first loads the basic Apache Yetus library, followed by the common routines used by all of the precommit shell code.  This order is dictated by prefixing the plug-in files with a number.  Other files in this directory are loaded in shell collated order.</p></li>
+<li><p>personality contains bundled personalities for various projects.  These will be imported individually based upon either a project name or if specifically identified with the <code>--personality</code> flag.</p></li>
+<li><p>test-patch.d contains all of the optional, bundled plug-ins.  These are imported last and in shell collated order.</p></li>
+</ul>
+
+<p>If the <code>--skip-system-plugins</code> flag is passed, then only core.d is imported.</p>
+
+<h2 id="test-plug-ins">Test Plug-ins</h2>
+
+<p>Plug-ins geared towards independent tests are registered via:</p>
+<pre class="highlight shell"><code>add_test_type &lt;pluginname&gt;
+</code></pre>
+<ul>
+<li><p>pluginname_filefilter</p>
+
+<ul>
+<li>executed while determining which files trigger which tests.  This function should use <code>add_test pluginname</code> to add the plug-in to the test list.</li>
+</ul></li>
+<li><p>pluginname_compile</p>
+
+<ul>
+<li>executed immediately after the actual compilation. This step is intended to be used to verify the results and add extra checking of the compile phase and it&rsquo;s stdout/stderr.</li>
+</ul></li>
+<li><p>pluginname_tests</p>
+
+<ul>
+<li>executed after the unit tests have completed.</li>
+</ul></li>
+<li><p>pluginname_clean</p>
+
+<ul>
+<li>executed to allow the plugin to remove all files that have been generate by this plugin.</li>
+</ul></li>
+<li><p>pluginname_logfilter</p>
+
+<ul>
+<li>This functions should filter all lines relevant to this test from the logfile. It is called in preparation for the <code>calcdiffs</code> function.</li>
+</ul></li>
+<li><p>pluginname_calcdiffs</p>
+
+<ul>
+<li>This allows for custom log file difference calculation used to determine the before and after views.  The default is to use the last column of a colon delimited line of output and perform a diff.  If the plug-in does not provide enough context, this may result in error skew. For example, if three lines in a row have <q>Missing period.</q> as the error, test-patch will not be able to determine exactly which line caused the error.  Plug-ins that have this issue will want to use this or potentially modify the normal tool&rsquo;s output (e.g., checkstyle) to provide a more accurate way to determine differences.</li>
+</ul></li>
+</ul>
+
+<p>NOTE: If the plug-in has support for maven, the maven_add_install <code>pluginname</code> should be executed. See more information in Custom Maven Tests in the build tool documentation.</p>
+
+<h1 id="personalities">Personalities</h1>
+
+<h2 id="configuring-for-other-projects">Configuring for Other Projects</h2>
+
+<p>It is impossible for any general framework to be predictive about what types of special rules any given project may have, especially when it comes to ordering and Maven profiles.  In order to direct test-patch to do the correct action, a project <code>personality</code> should be added that enacts these custom rules.</p>
+
+<p>A personality consists of two functions. One that determines which test types to run and another that allows a project to dictate ordering rules, flags, and profiles on a per-module, per-test run.</p>
+
+<p>There can be only <strong>one</strong> of each personality function defined.</p>
+
+<h2 id="global-definitions">Global Definitions</h2>
+
+<p>Globals for personalities should be defined in the <code>personality_globals</code> function.  This function is called <em>after</em> the other plug-ins have been imported.  This allows one to configure any settings for plug-ins that have been imported safely:</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_globals
+<span class="o">{</span>
+  <span class="nv">PATCH_BRANCH_DEFAULT</span><span class="o">=</span>master
+  <span class="nv">GITHUB_REPO</span><span class="o">=</span><span class="s2">"apache/yetus"</span>
+<span class="o">}</span>
+</code></pre>
+<p>Additionally, a personality may require some outside help from the user.  The <code>personality_parse_args</code>
+function is called almost immediately after the personality is loaded and plug-ins parse arguments.</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_parse_args
+<span class="o">{</span>
+  <span class="nb">echo</span> <span class="s2">"</span><span class="nv">$*</span><span class="s2">"</span>
+<span class="o">}</span>
+</code></pre>
+<p>It is important to note that this function is called AFTER personality_globals.</p>
+
+<h2 id="test-determination">Test Determination</h2>
+
+<p>The <code>personality_file_tests</code> function determines which tests to turn on based upon the file name.  It is relatively simple.  For example, to turn on a full suite of tests for Java files:</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_file_tests
+<span class="o">{</span>
+  <span class="nb">local </span><span class="nv">filename</span><span class="o">=</span><span class="nv">$1</span>
+
+  <span class="k">if</span> <span class="o">[[</span> <span class="k">${</span><span class="nv">filename</span><span class="k">}</span> <span class="o">=</span>~ <span class="se">\.</span>java<span class="nv">$ </span><span class="o">]]</span>; <span class="k">then
+    </span>add_test findbugs
+    add_test javac
+    add_test javadoc
+    add_test mvninstall
+    add_test unit
+  <span class="k">fi</span>
+
+<span class="o">}</span>
+</code></pre>
+<p>The <code>add_test</code> function is used to activate the standard tests.  Additional plug-ins (such as checkstyle), will get queried on their own.</p>
+
+<h2 id="module-profile-determination">Module &amp; Profile Determination</h2>
+
+<p>Once the tests are determined, it is now time to pick which <a href="precommit-glossary.md#genericoutside-definitions">modules</a> should get used.  That&rsquo;s the job of the <code>personality_modules</code> function.</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_modules
+<span class="o">{</span>
+
+    clear_personality_queue
+
+...
+
+    personality_enqueue_module &lt;module&gt; &lt;flags&gt;
+
+<span class="o">}</span>
+</code></pre>
+<p>It takes exactly two parameters <code>repostatus</code> and <code>testtype</code>.</p>
+
+<p>The <code>repostatus</code> parameter tells the <code>personality</code> function exactly what state the source repository is in.  It can only be in one of two states:  <code>branch</code> or <code>patch</code>.  <code>branch</code> means the patch has not been applied.  The <code>patch</code> state is after the patch has been applied.</p>
+
+<p>The <code>testtype</code> state tells the personality exactly which test is about to be executed.</p>
+
+<p>In order to communicate back to test-patch, there are two functions for the personality to use.</p>
+
+<p>The first is <code>clear_personality_queue</code>. This removes the previous test&rsquo;s configuration so that a new module queue may be built. Custom <code>personality_modules</code> will almost always want to do this as the first action.</p>
+
+<p>The second is <code>personality_enqueue_module</code>.  This function takes two parameters.  The first parameter is the name of the module to add to this test&rsquo;s queue.  The second parameter is an option list of additional flags to pass to Maven when processing it. <code>personality_enqueue_module</code> may be called as many times as necessary for your project.</p>
+<pre class="highlight plaintext"><code>NOTE: A module name of . signifies the root of the repository.
+</code></pre>
+<p>For example, let&rsquo;s say your project uses a special configuration to skip unit tests (-DskipTests).  Running unit tests during a javadoc build isn&rsquo;t very useful and wastes a lot of time. We can write a simple personality check to disable the unit tests:</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_modules
+<span class="o">{</span>
+    <span class="nb">local </span><span class="nv">repostatus</span><span class="o">=</span><span class="nv">$1</span>
+    <span class="nb">local </span><span class="nv">testtype</span><span class="o">=</span><span class="nv">$2</span>
+
+    <span class="k">if</span> <span class="o">[[</span> <span class="k">${</span><span class="nv">testtype</span><span class="k">}</span> <span class="o">==</span> <span class="s1">'javadoc'</span> <span class="o">]]</span>; <span class="k">then
+        </span>personality_enqueue_module . -DskipTests
+        <span class="k">return
+    fi</span>
+    ...
+
+</code></pre>
+<p>This function will tell test-patch that when the javadoc test is being run, do the documentation build at the base of the source repository and make sure the -DskipTests flag is passed to our build tool.</p>
+
+<h2 id="enabling-plug-ins">Enabling Plug-ins</h2>
+
+<p>Personalities can set the base list of plug-ins to enable and disable for their project via the <code>personality_plugins</code> function. Just call it with the same pattern as the <code>--plugins</code> command line option:</p>
+<pre class="highlight shell"><code>personality_plugins <span class="s2">"all,-checkstyle,-findbugs,-asflicense"</span>
+</code></pre>
+<p>This list is used if the user does not provide a list of plug-ins.</p>
+
+<h1 id="important-variables">Important Variables</h1>
+
+<p>There are a handful of extremely important system variables that make life easier for personality and plug-in writers.  Other variables may be provided by individual plug-ins.  Check their development documentation for more information.</p>
+
+<ul>
+<li><p>BUILD_NATIVE will be set to true if the system has requested that non-JVM-based code be built (e.g., JNI or other compiled C code). Under Jenkins, this is always true.</p></li>
+<li><p>BUILDTOOL specifies which tool is currently being used to drive compilation.  Additionally, many build tools define xyz_ARGS to pass on to the build tool command line. (e.g., MAVEN_ARGS if maven is in use).  Projects may set this in their personality.  NOTE: today, only one build tool at a time is supported.  This may change in the future.</p></li>
+<li><p>CHANGED_FILES[@] is an array of all files that appear to be added, deleted, or modified in the patch.</p></li>
+<li><p>CHANGED_MODULES[@] is an array of all modules that house all of the CHANGED_FILES[@].  Be aware that the root of the source tree is reported as &lsquo;.&rsquo;.</p></li>
+<li><p>DOCKER_EXTRAARGS[@] is an array of command line arguments to apply to the <code>docker run</code> command.</p></li>
+<li><p>GITHUB_REPO is to help test-patch when talking to Github.  If test-patch is given just a number on the command line, it will default to using this repo to determine the pull request.</p></li>
+<li><p>JIRA_ISSUE_RE is to help test-patch when talking to JIRA.  It helps determine if the given project is appropriate for the given JIRA issue.</p></li>
+<li><p>MODULE and other MODULE_* are arrays that contain which modules, the status, etc, to be operated upon. These should be treated as read-only by plug-ins.</p></li>
+<li><p>PATCH_BRANCH_DEFAULT is the name of the branch in the git repo that is considered the master.  This is useful to set in personalities.</p></li>
+<li><p>PATCH_DIR is the name of the temporary directory that houses test-patch artifacts (such as logs and the patch file itself)</p></li>
+<li><p>PATCH_NAMING_RULE should be a URL that points to a project&rsquo;s on-boarding documentation for new users. It is used to suggest a review of patch naming guidelines. Since this should be project specific information, it is useful to set in a project&rsquo;s personality.</p></li>
+<li><p>TEST_PARALLEL if parallel unit tests have been requested. Project personalities are responsible for actually enabling or ignoring the request. TEST_THREADS is the number of threads that have been requested to run in parallel.</p></li>
+</ul>
+
+    </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+              <div class="span12">
+                Copyright 2008-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+              </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+  </body>
+</html>


Mime
View raw message