<!---
  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.13.0/">Docs for v0.13.0</a></li>
                      <li><a href="/documentation/0.14.1/">Docs for v0.14.1</a></li>
                      <li><a href="/documentation/0.15.0/">Docs for v0.15.0</a></li>
                      <li><a href="/documentation/in-progress/">In Progress Docs for Contributors</a>
                      </li>
                      <li><a href="/documentation/history/">History of the Project</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="https://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://gitbox.apache.org/repos/asf/yetus.git"><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="https://www.apache.org">Apache Homepage</a>
                            </li>
                            <li><a href="https://www.apache.org/licenses/">Apache License</a>
                            </li>
                            <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                            </li>
                            <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                            </li>
                            <li><a href="https://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="apache-yetus--0100-release-notes">Apache Yetus  0.10.0 Release Notes</h1>

<p>These release notes cover new developer and user-facing incompatibilities, important issues, features, and major improvements.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-782">YETUS-782</a></td>
          <td><em>Major</em></td>
          <td><strong>Remove ruby-lint support</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<p>Support for ruby-lint has been removed as the tool is no longer supported.  Instead, use rubocop.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-688">YETUS-688</a></td>
          <td><em>Major</em></td>
          <td><strong>convert key globals from strings to arrays</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>For developers, the various <code>yetus_*_entry</code> routines have been removed form yetuslib.  There were a lot of issues with duplicate names and other problems that really made them hard to use.  All of those routines and the variables that used them have been replaced with equivalent routines and variables that are array-based.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-474">YETUS-474</a></td>
          <td><em>Blocker</em></td>
          <td><strong>Option to releasedocmaker to write empty files when no JIRA issues match</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>releasedocmaker now has a <code>--empty</code> flag to allow the creation of release notes when there are no JIRAs assigned to a version.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-801">YETUS-801</a></td>
          <td><em>Major</em></td>
          <td><strong>Remove deprecated private token support from Github</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>The <code>--github-token</code> option has been removed from precommit. (Github has removed support private token support from Github and Github Enterprise.)</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-807">YETUS-807</a></td>
          <td><em>Major</em></td>
          <td><strong>SemaphoreCI Support</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>Precommit now has some preliminary support for Semaphore CI.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-819">YETUS-819</a></td>
          <td><em>Major</em></td>
          <td><strong>Azure Pipelines Support</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<p>Precommit now has some preliminary support for Azure Pipelines. Note that artifact links and Docker are unsupported.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-809">YETUS-809</a></td>
          <td><em>Blocker</em></td>
          <td><strong>findbugs isn't finding bugs in qbt-mode</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>Previously, if the findbugs plug-in was given a parent module with no source code but children modules did have source code, findbugs would ignore the whole directory.  This has been fixed such that all reports generated by children of a parent module are merged and generated as a report of the parent.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-749">YETUS-749</a></td>
          <td><em>Major</em></td>
          <td><strong>change findbugs to spotbugs</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>Precommit now includes specific support for SpotBugs.  Note that only one of FindBugs or SpotBugs may be enabled.  By default, SpotBugs will disable FindBugs automatically.  To specifically pick one or the other, use the <code>--plugins</code> control. For example:</p>

<div class="highlight"><pre class="highlight plaintext"><code>---plugins=all,-findbugs
</code></pre></div>
<p>will disable FindBugs whereas</p>

<div class="highlight"><pre class="highlight plaintext"><code>--plugins=all,-spotbugs
</code></pre></div>
<p>will disable SpotBugs.</p>

<p>The SpotBugs plug-in requires the SPOTBUGS_HOME environment variable to be defined.  It should point to the location where SpotBugs has been installed.</p>

<hr />

<ul>
  <li>
    <table class="table table-bordered table-striped">
      <tbody>
        <tr>
          <td><a href="https://issues.apache.org/jira/browse/YETUS-724">YETUS-724</a></td>
          <td><em>Major</em></td>
          <td><strong>github diff vs. patch</strong></td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<!-- markdown -->
<p>precommit will now attempt to try both forms of git patches (binary format-patch and ASCII git diff) when working with Github PRs or Gitlab MRs. It will prefer the format-patch style due to accuracy, but will fallback to diff style if the former does not apply successfully.</p>


    </div>
      
<div class="container">
    <hr>
    <footer class="footer">
        <div class="row-fluid">
            <div class="span12 text-left">
              <div class="span12">
                Copyright 2008-2023 <a href="https://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="https://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>
