Commit traversal
An iterator over the ancestors one or more starting commits
Specify how to handle commit parents during traversal.