protected List generateChangeSetsFromSCM()

in src/main/java/org/apache/maven/plugins/changelog/ChangeLogReport.java [564:669]


    protected List<ChangeLogSet> generateChangeSetsFromSCM() throws MavenReportException {
        try {
            List<ChangeLogSet> changeSets = new ArrayList<>();

            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);
        }
    }