@Override
protected PollingResult compareRemoteRevisionWith(
AbstractProject<?, ?> project, Launcher launcher,
FilePath workspace, TaskListener listener, SCMRevisionState baseline)
throws IOException, InterruptedException {
MultiSCMRevisionState baselineStates = baseline instanceof MultiSCMRevisionState ? (MultiSCMRevisionState) baseline : null;
MultiSCMRevisionState currentStates = new MultiSCMRevisionState();
Change overallChange = Change.NONE;
for(SCM scm : scms) {
SCMRevisionState scmBaseline = baselineStates != null ? baselineStates.get(scm, workspace, null) : null;
if (scmBaseline instanceof MultiSCMRevisionState
&& !(scm instanceof MultiSCM)) {
continue;
}
PollingResult scmResult = scm.poll(project, launcher, workspace, listener, scmBaseline != null ? scmBaseline : SCMRevisionState.NONE);
currentStates.add(scm, workspace, null, scmResult.remote);
if(scmResult.change.compareTo(overallChange) > 0)
overallChange = scmResult.change;
}
return new PollingResult(baselineStates, currentStates, overallChange);
}