in internal/controllers/scheduling/op.go [253:285]
func inputChangeCount(synth *apiv1.Synthesizer, a, b []apiv1.InputRevisions) (nonDeferred, deferred int) {
refsByKey := map[string]apiv1.Ref{}
for _, ref := range synth.Spec.Refs {
ref := ref
refsByKey[ref.Key] = ref
}
bByKey := map[string]apiv1.InputRevisions{}
for _, br := range b {
bByKey[br.Key] = br
}
for _, ar := range a {
ref, exists := refsByKey[ar.Key]
if !exists {
continue
}
br, exists := bByKey[ar.Key]
if !exists {
continue
}
if br.Less(ar) {
if ref.Defer {
deferred++
} else {
nonDeferred++
}
}
}
return nonDeferred, deferred
}