module Octokit::Client::Stats
Methods for the Repository
Statistics API
Public Instance Methods
Get the number of additions and deletions per week
@param repo [Integer, String, Hash, Repository] A GitHub repository @option retry_timeout [Number] How long Octokit
should keep trying to get stats (in seconds) @option retry_wait [Number] How long Octokit
should wait between retries. @return [Array<Sawyer::Resource>] Weekly aggregate of the number of additions
and deletions pushed to a repository.
@see developer.github.com/v3/repos/statistics/#get-the-number-of-additions-and-deletions-per-week @example Get code frequency stats for octokit
@client.code_frequency_stats('octokit/octokit.rb')
# File lib/octokit/client/stats.rb, line 47 def code_frequency_stats(repo, options = {}) get_stats(repo, "code_frequency", options) end
Get the last year of commit activity data
@param repo [Integer, String, Hash, Repository] A GitHub repository @option retry_timeout [Number] How long Octokit
should keep trying to get stats (in seconds) @option retry_wait [Number] How long Octokit
should wait between retries. @return [Array<Sawyer::Resource>] The last year of commit activity grouped by
week. The days array is a group of commits per day, starting on Sunday.
@see developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity-data @example Get commit activity for octokit
@client.commit_activity_stats('octokit/octokit.rb')
# File lib/octokit/client/stats.rb, line 33 def commit_activity_stats(repo, options = {}) get_stats(repo, "commit_activity", options) end
Get contributors list with additions, deletions, and commit counts
@param repo [Integer, String, Hash, Repository] A GitHub repository @option retry_timeout [Number] How long Octokit
should keep trying to get stats (in seconds) @option retry_wait [Number] How long Octokit
should wait between retries. @return [Array<Sawyer::Resource>] Array of contributor stats @see developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts @example Get contributor stats for octokit
@client.contributors_stats('octokit/octokit.rb')
# File lib/octokit/client/stats.rb, line 18 def contributors_stats(repo, options = {}) get_stats(repo, "contributors", options) end
Get the weekly commit count for the repo owner and everyone else
@param repo [Integer, String, Hash, Repository] A GitHub repository @option retry_timeout [Number] How long Octokit
should keep trying to get stats (in seconds) @option retry_wait [Number] How long Octokit
should wait between retries. @return [Sawyer::Resource] Total commit counts for the owner and total commit
counts in all. all is everyone combined, including the owner in the last 52 weeks. If you’d like to get the commit counts for non-owners, you can subtract all from owner.
@see developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count-for-the-repository-owner-and-everyone-else @example Get weekly commit counts for octokit
@client.participation_stats("octokit/octokit.rb")
# File lib/octokit/client/stats.rb, line 63 def participation_stats(repo, options = {}) get_stats(repo, "participation", options) end
Get the number of commits per hour in each day
@param repo [Integer, String, Hash, Repository] A GitHub repository @option retry_timeout [Number] How long Octokit
should keep trying to get stats (in seconds) @option retry_wait [Number] How long Octokit
should wait between retries. @return [Array<Array>] Arrays containing the day number, hour number, and
number of commits
@see developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day @example Get octokit punch card
@octokit.punch_card_stats
# File lib/octokit/client/stats.rb, line 77 def punch_card_stats(repo, options = {}) get_stats(repo, "punch_card", options) end
Private Instance Methods
@private Get stats for a repository
@param repo [Integer, String, Hash, Repository] A GitHub repository @param metric [String] The metrics you are looking for @return [Array<Sawyer::Resource> or nil] Stats
in metric-specific format, or nil if not yet calculated. @see developer.github.com/v3/repos/statistics/
# File lib/octokit/client/stats.rb, line 90 def get_stats(repo, metric, options = {}) options = options.dup if retry_timeout = options.delete(:retry_timeout) retry_wait = options.delete(:retry_wait) || 0.5 timeout = Time.now + retry_timeout end loop do data = get("#{Repository.path repo}/stats/#{metric}", options) return data if last_response.status == 200 return [] if last_response.status == 204 return nil unless retry_timeout return nil if Time.now >= timeout sleep retry_wait if retry_wait end end