in src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java [634:747]
protected List<ChangeLogSet> generateChangeSetsFromSCM()
throws MavenReportException
{
try
{
List<ChangeLogSet> changeSets = new ArrayList<ChangeLogSet>();
ScmRepository repository = getScmRepository();
ScmProvider provider = manager.getProviderByRepository( repository );
ChangeLogScmResult result;
if ( "range".equals( type ) )
{
result = provider.changeLog( repository, new ScmFileSet( basedir ), null, null, range, (ScmBranch) null,
dateFormat );
checkResult( result );
changeSets.add( result.getChangeLog() );
}
else if ( "tag".equals( type ) )
{
Iterator<String> tagsIter = tags.iterator();
String startTag = tagsIter.next();
String endTag = null;
if ( tagsIter.hasNext() )
{
while ( tagsIter.hasNext() )
{
endTag = tagsIter.next();
String endRevision = getRevisionForTag( endTag, repository, provider );
String startRevision = getRevisionForTag( startTag, repository, provider );
result = provider.changeLog( repository, new ScmFileSet( basedir ),
new ScmRevision( startRevision ),
new ScmRevision( endRevision ) );
checkResult( result );
result.getChangeLog().setStartVersion( new ScmRevision( startTag ) );
result.getChangeLog().setEndVersion( new ScmRevision( endTag ) );
changeSets.add( result.getChangeLog() );
startTag = endTag;
}
}
else
{
String startRevision = getRevisionForTag( startTag, repository, provider );
String endRevision = getRevisionForTag( endTag, repository, provider );
result = provider.changeLog( repository, new ScmFileSet( basedir ),
new ScmRevision( startRevision ),
new ScmRevision( endRevision ) );
checkResult( result );
result.getChangeLog().setStartVersion( new ScmRevision( startTag ) );
result.getChangeLog().setEndVersion( null );
changeSets.add( result.getChangeLog() );
}
}
else if ( "date".equals( type ) )
{
Iterator<String> dateIter = dates.iterator();
String startDate = dateIter.next();
String endDate = null;
if ( dateIter.hasNext() )
{
while ( dateIter.hasNext() )
{
endDate = dateIter.next();
result = provider.changeLog( repository, new ScmFileSet( basedir ), parseDate( startDate ),
parseDate( endDate ), 0, (ScmBranch) null );
checkResult( result );
changeSets.add( result.getChangeLog() );
startDate = endDate;
}
}
else
{
result = provider.changeLog( repository, new ScmFileSet( basedir ), parseDate( startDate ),
parseDate( endDate ), 0, (ScmBranch) null );
checkResult( result );
changeSets.add( result.getChangeLog() );
}
}
else
{
throw new MavenReportException( "The type '" + type + "' isn't supported." );
}
filter( changeSets );
return changeSets;
}
catch ( ScmException e )
{
throw new MavenReportException( "Cannot run changelog command : ", e );
}
catch ( MojoExecutionException e )
{
throw new MavenReportException( "An error has occurred during changelog command : ", e );
}
}