org.apache.tools.ant.taskdefs.cvslib
public class: ChangeLogTask [javadoc |
source]
java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.AbstractCvsTask
org.apache.tools.ant.taskdefs.cvslib.ChangeLogTask
All Implemented Interfaces:
Cloneable
Examines the output of cvs log and group related changes together.
It produces an XML output representing the list of changes.
<!-- Root element -->
<!ELEMENT changelog
(entry+)
>
<!-- CVS Entry -->
<!ELEMENT entry
(date,author,file+,msg)
>
<!-- Date of cvs entry -->
<!ELEMENT date (#PCDATA)
>
<!-- Author of change -->
<!ELEMENT author (#PCDATA)
>
<!-- List of files affected -->
<!ELEMENT msg (#PCDATA)
>
<!-- File changed -->
<!ELEMENT file
(name,revision,prevrevision?
)>
<!-- Name of the file -->
<!ELEMENT name (#PCDATA)
>
<!-- Revision number -->
<!ELEMENT revision
(#PCDATA)>
<!-- Previous revision number -->
<!ELEMENT prevrevision
(#PCDATA)>
- since:
Ant - 1.5
- ant.task:
name - ="cvschangelog" category="scm"
| Methods from org.apache.tools.ant.taskdefs.AbstractCvsTask: |
|---|
|
addCommandArgument, addCommandArgument, addConfiguredCommandline, addConfiguredCommandline, configureCommandline, execute, getCommand, getCvsRoot, getCvsRsh, getDest, getErrorStream, getExecuteStreamHandler, getOutputStream, getPackage, getPassFile, getPort, getTag, removeCommandline, runCommand, setAppend, setCommand, setCompression, setCompressionLevel, setCvsRoot, setCvsRsh, setDate, setDest, setError, setErrorStream, setExecuteStreamHandler, setFailOnError, setNoexec, setOutput, setOutputStream, setPackage, setPassfile, setPort, setQuiet, setReallyquiet, setTag |
| Methods from org.apache.tools.ant.Task: |
|---|
|
bindToOwner, execute, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, markInvalid, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType |
| Method from org.apache.tools.ant.taskdefs.cvslib.ChangeLogTask Detail: |
public void addFileset(FileSet fileSet) {
filesets.addElement(fileSet);
}
Adds a set of files about which cvs logs will be generated. |
public void addUser(CvsUser user) {
cvsUsers.addElement(user);
}
Add a user to list changelog knows about. |
public void execute() throws BuildException {
File savedDir = inputDir; // may be altered in validate
try {
validate();
final Properties userList = new Properties();
loadUserlist(userList);
for (int i = 0, size = cvsUsers.size(); i < size; i++) {
final CvsUser user = (CvsUser) cvsUsers.get(i);
user.validate();
userList.put(user.getUserID(), user.getDisplayname());
}
setCommand("log");
if (getTag() != null) {
CvsVersion myCvsVersion = new CvsVersion();
myCvsVersion.setProject(getProject());
myCvsVersion.setTaskName("cvsversion");
myCvsVersion.setCvsRoot(getCvsRoot());
myCvsVersion.setCvsRsh(getCvsRsh());
myCvsVersion.setPassfile(getPassFile());
myCvsVersion.setDest(inputDir);
myCvsVersion.execute();
if (myCvsVersion.supportsCvsLogWithSOption()) {
addCommandArgument("-S");
}
}
if (null != startDate) {
final SimpleDateFormat outputDate =
new SimpleDateFormat("yyyy-MM-dd");
// We want something of the form: -d " >=YYYY-MM-dd"
final String dateRange = " >=" + outputDate.format(startDate);
// Supply '-d' as a separate argument - Bug# 14397
addCommandArgument("-d");
addCommandArgument(dateRange);
}
// Check if list of files to check has been specified
if (!filesets.isEmpty()) {
final Enumeration e = filesets.elements();
while (e.hasMoreElements()) {
final FileSet fileSet = (FileSet) e.nextElement();
final DirectoryScanner scanner =
fileSet.getDirectoryScanner(getProject());
final String[] files = scanner.getIncludedFiles();
for (int i = 0; i < files.length; i++) {
addCommandArgument(files[i]);
}
}
}
final ChangeLogParser parser = new ChangeLogParser();
final RedirectingStreamHandler handler =
new RedirectingStreamHandler(parser);
log(getCommand(), Project.MSG_VERBOSE);
setDest(inputDir);
setExecuteStreamHandler(handler);
try {
super.execute();
} finally {
final String errors = handler.getErrors();
if (null != errors) {
log(errors, Project.MSG_ERR);
}
}
final CVSEntry[] entrySet = parser.getEntrySetAsArray();
final CVSEntry[] filteredEntrySet = filterEntrySet(entrySet);
replaceAuthorIdWithName(userList, filteredEntrySet);
writeChangeLog(filteredEntrySet);
} finally {
inputDir = savedDir;
}
}
|
public void setDaysinpast(int days) {
// CheckStyle:MagicNumber OFF
final long time = System.currentTimeMillis()
- (long) days * 24 * 60 * 60 * 1000;
// CheckStyle:MagicNumber ON
setStart(new Date(time));
}
Set the number of days worth of log entries to process. |
public void setDestfile(File destFile) {
this.destFile = destFile;
}
Set the output file for the log. |
public void setDir(File inputDir) {
this.inputDir = inputDir;
}
Set the base dir for cvs. |
public void setEnd(Date endDate) {
this.endDate = endDate;
}
Set the date at which the changelog should stop. |
public void setStart(Date start) {
this.startDate = start;
}
Set the date at which the changelog should start. |
public void setUsersfile(File usersFile) {
this.usersFile = usersFile;
}
Set a lookup list of user names & addresses |