@@ -12,10 +12,35 @@ class Commits(Service, MimeTypeMixin):
1212 This service support :ref:`mimetypes-section` configuration
1313 """
1414
15- #TODO: Pagination structure differs from usual
16- #def list(self, user=None, repo=None, sha='', path=''):
17- #request = self.make_request('repos.commits.list', user=user, repo=repo)
18- #return self._get_result(request, sha=sha, path=path)
15+ def list (self , user = None , repo = None , sha = None , path = None ):
16+ """ Get repository's commits
17+
18+ :param str user: Username
19+ :param str repo: Repository
20+ :param str sha: Sha or branch to start listing commits from
21+ :param str path: Only commits containing this file path will be returned
22+ :returns: A :doc:`result`
23+
24+ .. note::
25+ Remember :ref:`config precedence`
26+
27+ .. warning::
28+ Usually a repository has thousand of commits, so be careful when
29+ consume the result. You should filter with ``sha`` or directly
30+ clone the repository
31+
32+ ::
33+
34+ commits_service.list(user='octocat', repo='oct_repo')
35+ commits_service.list(user='octocat', repo='oct_repo', sha='dev')
36+ commits_service.list(user='django', repo='django', sha='master',
37+ path='django/db/utils.py')
38+ """
39+ request = self .make_request ('repos.commits.list' , user = user , repo = repo )
40+ params = {}
41+ params .update (sha and {'sha' : sha } or {})
42+ params .update (path and {'path' : path } or {})
43+ return self ._get_normal_result (request , ** params )
1944
2045 def get (self , sha , user = None , repo = None ):
2146 """ Get a single commit
0 commit comments