## CvsChangeLog

### Description

Generates an XML-formatted report file of the change logs recorded in a CVS repository.

Important: This task needs "cvs" on the path. If it isn't, you will get an error (such as error 2 on windows). If `<cvs>` doesn't work, try to execute cvs.exe from the command line in the target directory in which you are working.

### Parameters

Attribute | Description | Required
Attributes from parent Cvs task which are meaningful here Since ant 1.6.1
cvsRoot | the `CVSROOT` variable. | No
cvsRsh | the `CVS_RSH` variable. | No
package | the package/module to check out. | No
port | Port used by CVS to communicate with the server. | No, default port 2401.
passfile | Password file to read passwords from. | No, default file `~/.cvspass`.
failonerror | Stop the build process if the command exits with a return code other than `0`. Defaults to false | No
tag | query the changelog for a specific branch. | No
Specific attributes
dir | The directory from which to run the CVS log command. | No; defaults to /home/kev/workspace/ant-core-171.
destfile | The file in which to write the change log report. | Yes
usersfile | Property file that contains name-value pairs mapping user IDs and names that should be used in the report in place of the user ID. | No
daysinpast | Sets the number of days into the past for which the change log information should be retrieved. | No
start | The earliest date from which change logs are to be included in the report. | No
end | The latest date to which change logs are to be included in the report. | No

### Parameters specified as nested elements

#### user

The nested `<user>` element allows you to specify a mapping between a user ID as it appears on the CVS server and a name to include in the formatted report. Anytime the specified user ID has made a change in the repository, the `<author>` tag in the report file will include the name specified in `displayname` rather than the user ID.

Attribute | Description | Required
displayname | The name to be used in the CVS change log report. | Yes
userid | The userid of the person as it exists on the CVS server. | Yes

### Examples

      <cvschangelog dir="dve/network"
                    destfile="changelog.xml"
      />

Generates a change log report for all the changes that have been made under the `dve/network` directory. It writes these changes into the file `changelog.xml`.

      <cvschangelog dir="dve/network"
                    destfile="changelog.xml"
                    daysinpast="10"
      />

Generates a change log report for any changes that were made under the `dve/network` directory in the past 10 days. It writes these changes into the file `changelog.xml`.

      <cvschangelog dir="dve/network"
                    destfile="changelog.xml"
                    start="20 Feb 2002"
                    end="20 Mar 2002"
      />

Generates a change log report for any changes that were made between February 20, 2002 and March 20, 2002 under the `dve/network` directory. It writes these changes into the file `changelog.xml`.

      <cvschangelog dir="dve/network"
                    destfile="changelog.xml"
                    start="20 Feb 2002"
      />

Generates a change log report for any changes that were made after February 20, 2002 under the `dve/network` directory. It writes these changes into the file `changelog.xml`.

      <cvschangelog dir="dve/network"
                    destfile="changelog.xml">
           <user displayname="Peter Donald" userid="donaldp"/>
      </cvschangelog>

Generates a change log report for all the changes that were made under the `dve/network` directory, substituting the name "Peter Donald" in the `<author>` tags anytime it encounters a change made by the user ID "donaldp". It writes these changes into the file `changelog.xml`.

Generates a change log report on the `ANT_16_BRANCH`.

     <cvschangelog dir="c:/dev/asf/ant.head" passfile="c:/home/myself/.cvspass"
                    destfile="changelogant.xml" tag="ANT_16_BRANCH"/>

#### Generate Report

Ant includes a basic XSLT stylesheet that you can use to generate a HTML report based on the xml output. The following example illustrates how to generate a HTML report from the XML report.

            <style in="changelog.xml"
                   out="changelog.html"
                   style="/home/kev/workspace/ant-core-171/bootstrap/etc/changelog.xsl">
              <param name="title" expression="Ant ChangeLog"/>
              <param name="module" expression="ant"/>
              <param name="cvsweb" expression="http://cvs.apache.org/viewcvs/"/>
            </style>

#### Sample Output

    <changelog>
      <entry>
        <date>2002-03-06</date>
        <time>12:00</time>
        <author>Peter Donald</author>
        <file>
          <name>org/apache/myrmidon/build/AntlibDescriptorTask.java</name>
          <revision>1.3</revision>
          <prevrevision>1.2</prevrevision>
        </file>
        <msg><![CDATA[Use URLs directly rather than go via a File.

    This allows templates to be stored inside jar]]></msg>
      </entry>
    </changelog>