revList repo lower upper = do
    objects <- mapM (loadObject repo) upper
    let commits = rejectCommits lower $ onlyCommits objects
    liftM2 (++) (return commits) (revList repo lower (parents $ commits))
revList repo lower upper = do
    objects <- mapM (loadObject repo) upper
    let commits = rejectCommits lower $ onlyCommits objects
    liftM2 (++) (return commits) (revList repo lower (parents $ commits))
revList repo lower upper = do
    objects <- mapM (loadObject repo) upper
    let commits = rejectCommits lower $ onlyCommits objects
    liftM2 (++) (return commits) (revList repo lower (parents $ commits))