'Iterate over commits in this repository.
:param str sha: (optional), sha or branch to start listing commits
from
:param str path: (optional), commits containing this path will be
listed
:param str author: (optional), GitHub login, real name, or email to
filter commits by (using commit author)
:param int number: (optional), number of comments to return. Default:
-1 returns all comments
:param str etag: (optional), ETag from a previous request to the same
endpoint
:param since: (optional), Only commits after this date will
be returned. This can be a ``datetime`` or an ``ISO8601`` formatted
date string.
:type since: datetime or string
:param until: (optional), Only commits before this date will
be returned. This can be a ``datetime`` or an ``ISO8601`` formatted
date string.
:type until: datetime or string
:param int per_page: (optional), commits listing page size
:returns: generator of
:class:`RepoCommit <github3.repos.commit.RepoCommit>`\ s'

def commits(self, sha=None, path=None, author=None, number=(-1), etag=None, since=None, until=None, per_page=None):

    params = {u'sha': sha, u'path': path, u'author': author, u'since': timestamp_parameter(since), u'until': timestamp_parameter(until), u'per_page': per_page}
    self._remove_none(params)
    url = self._build_url(u'commits', base_url=self._api)
    return self._iter(int(number), url, RepoCommit, params, etag)
