This will schedule the sync job for the given repository. Once the scheduling is complete, the repository's adapter will be asked to synchronize with the remote repository according to the time(s) specified in the {@link Repo#getSyncSchedule() schedule}.
If the repository's sync schedule is empty, this method assumes it should not be automatically sync'ed, so no schedule will be created, and this method simply returns.
@param repo repository to sync
@throws SchedulerException if failed to schedule the job