···154154 return false, fmt.Errorf("invalid job state: %q", j.state)
155155 }
156156157157- if j.rev >= rev {
157157+ if j.rev >= rev || (since == nil && j.rev != "") {
158158 // we've already accounted for this event
159159 return false, ErrAlreadyProcessed
160160 }
···320320 }
321321322322 if opset.since == nil {
323323- // TODO: what does this mean?
324324- return fmt.Errorf("nil since in event after backfill: %w", ErrEventGap)
323323+ // The first event for a repo may have a nil since
324324+ // We should process it only if the rev is empty, skip otherwise
325325+ if j.rev != "" {
326326+ continue
327327+ }
325328 }
326329327330 if j.rev > *opset.since {