# Commit log

`Repository.``walk`(oid[, sort_mode]) → iterator

  Generator that traverses the history starting from the given commit. The following types of sorting could be used to control traversing direction:

  - GIT_SORT_NONE. This is the default sorting for new walkers. Sort the repository contents in no particular ordering
  - GIT_SORT_TOPOLOGICAL. Sort the repository contents in topological order (parents before children); this sorting mode can be combined with time sorting.
  - GIT_SORT_TIME. Sort the repository contents by commit time
  - GIT_SORT_REVERSE. Iterate through the repository contents in reverse order; this sorting mode can be combined with any of the above.

  Example:

      >>> from pygit2 import Repository
      >>> from pygit2 import GIT_SORT_TOPOLOGICAL, GIT_SORT_REVERSE
      >>> repo = Repository('.git')
      >>> for commit in repo.walk(repo.head.target, GIT_SORT_TOPOLOGICAL):
      ...    print commit.message
      >>> for commit in repo.walk(repo.head.target, GIT_SORT_TOPOLOGICAL | GIT_SORT_REVERSE):
      ...    print commit.message
      >>>

`Walker.``hide`(oid)

  Mark a commit (and its ancestors) uninteresting for the output.

`Walker.``push`(oid)

  Mark a commit to start traversal from.

`Walker.``reset`()

  Reset the walking machinery for reuse.

`Walker.``sort`(mode)

  Change the sorting mode (this resets the walker).

`Walker.``simplify_first_parent`()

  Simplify the history by first-parent.