<?xml version="1.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.
-->

<faqs id="FAQ" title="Frequently Asked Questions">
  <part id="General">
    <faq id="What is the difference between the Changelog plugin and the Changes plugin">
      <question>What is the difference between the Changelog plugin and the Changes plugin?</question>
      <answer>
        <p>
        The Changelog plugin generates reports based on the changes in the Software Configuration Management or SCM while
        the Changes plugin generates reports either from a changes.xml file or from the JIRA issue management system.
        For more information about the changes plugin, see
        <a href="http://maven.apache.org/plugins/maven-changes-plugin/">http://maven.apache.org/plugins/maven-changes-plugin</a>
        </p>
      </answer>
    </faq>
    <faq id="What is Software Configuration Management or SCM">
      <question>What is Software Configuration Management or SCM?</question>
      <answer>
        <p>
        According to Roger Pressman (in his book) Software Engineering: A Practitioner's Approach, SCM is a <em>"set of activities
        designed to control change by identifying the work products that are likely to change, establishing relationships among
        them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and
        auditing and reporting on the changes made."</em>
        </p>
      </answer>
    </faq>
    <faq id="Why do the dates look weird in the report when I use the dateFormat parameter">
      <question>Why do the dates look weird in the report when I use the dateFormat parameter?</question>
      <answer>
        <p>
          The <code>dateFormat</code> parameter is used when parsing the dates
          from the log entries retrieved from your SCM system. It can
          <strong>not</strong> be used to format the dates in the report. If
          you try to do this the parsed dates will be wrong and the dates in
          the report even more so. They can look like this
          <code>0020-05-27</code> for a file that was changed on 14 december
          2005.
        </p>
      </answer>
    </faq>
    <faq id="How can I debug the SCM command">
      <question>How can I debug the SCM command?</question>
      <answer>
        <p>
          When you generate the report, you will see output like this on the
          command line:
<source>
[INFO] [changelog:changelog]
[INFO] Generating changed sets xml to: .../target/changelog.xml
[INFO] Executing: svn --non-interactive log -v -r "{2007-06-13 22:22:09 +0000}:{2007-07-14 22:22:09 +0000}" http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-site-plugin
</source>
          Copy the SCM command (everything after <code>Executing:</code>) and
          try to run it by itself on the command line. If it doesn't work on
          the command line there's probably something wrong with the
          <code>&lt;scm&gt;</code> element in your <code>pom.xml</code>.
        </p>
      </answer>
    </faq>
    <faq id="My changelog report is blank, but it shouldn't be">
      <question>My changelog report is blank, but it shouldn't be</question>
      <answer>
        <p>
          The first thing to check is what data the changelog plugin managed to
          pull out of your SCM system. In the file
          <code>target/changelog.xml</code> you will find that data. Have a
          look and see if the data in the file seems correct. If it is not
          correct, then you are not getting the data you expected from your SCM
          system. Please check your changelog plugin configuration.
        </p>
        <p>
          If that doesn't help, you can try to run the maven-scm-plugin from
          the command line. The maven-changelog-plugin uses Maven SCM under the
          hood and running the maven-scm-plugin is a great way of verifying
          that the <code>&lt;scm&gt;</code> element in your
          <code>pom.xml</code> file is correct. Try this on the command line:
<source>
mvn scm:changelog
</source>
          It should show you the latest changes made in your SCM. It uses the
          default settings, but you can change these by specifying parameters
          on the command line. Read more about this in
          <a href="http://maven.apache.org/scm/plugins/examples/scm-advance-features.html">the scm-plugin documentation</a>.
        </p>
      </answer>
    </faq>
    <faq id="Where can I find a working configuration for this plugin">
      <question>Where can I find a working configuration for this plugin?</question>
      <answer>
        <p>
          The plugin itself is configured to generate a changelog report. This
          is done using the bare minimum of configuration. Have a look at the
          <code>&lt;scm&gt;</code> and
          <code>&lt;reporting&gt;/&lt;plugins&gt;</code> elements in the
          <a href="http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-changelog-plugin/pom.xml">pom.xml</a>
          of this plugin. The generated report is found
          <a href="changelog.html">here</a>.
        </p>
      </answer>
    </faq>
    <faq id="I think I've found a bug in this plugin, what do I do">
      <question>I think I've found a bug in this plugin, what do I do?</question>
      <answer>
        <p>
          Please follow these steps in the order they come.
        </p>
        <ol>
          <li>
            Read all the FAQs on this page.
          </li>
          <li>
            Ask a question on the user list. Please supply the necessary
            information so that the people on the list can help you. This
            includes the <code>&lt;scm&gt;</code> element from your
            <code>pom.xml</code>, your plugin configuration plus a rich
            description of what happens and what you expected to happen.
          </li>
          <li>
            Create an issue in <a href="issue-tracking.html">JIRA</a>.
          </li>
        </ol>
      </answer>
    </faq>
  </part>
</faqs>