class Git::Log
Return the last n commits that match the specified criteria
@example The last (default number) of commits
git = Git.open('.') Git::Log.new(git) #=> Enumerable of the last 30 commits
@example The last n commits
Git::Log.new(git).max_commits(50) #=> Enumerable of last 50 commits
@example All commits returned by ‘git log`
Git::Log.new(git).max_count(:all) #=> Enumerable of all commits
@example All commits that match complex criteria
Git::Log.new(git) .max_count(:all) .object('README.md') .since('10 years ago') .between('v1.0.7', 'HEAD')
@api public
Public Class Methods
Source
# File lib/git/log.rb, line 41 def initialize(base, max_count = 30) dirty_log @base = base max_count(max_count) end
Create a new Git::Log
object
@example
git = Git.open('.') Git::Log.new(git)
@param base [Git::Base] the git repository object @param max_count
[Integer, Symbol, nil] the number of commits to return, or
`:all` or `nil` to return all Passing max_count to {#initialize} is equivalent to calling {#max_count} on the object.
Public Instance Methods
Source
# File lib/git/log.rb, line 163 def [](index) check_log @commits[index] rescue nil end
Source
# File lib/git/log.rb, line 76 def all dirty_log @all = true self end
Adds the –all flag to the git log command
This asks for the logs of all refs (basically all commits reachable by HEAD, branches, and tags). This does not control the maximum number of commits returned. To control how many commits are returned, call {#max_count}.
@example Return the last 50 commits reachable by all refs
git = Git.open('.') Git::Log.new(git).max_count(50).all
@return [self]
Source
# File lib/git/log.rb, line 124 def between(sha1, sha2 = nil) dirty_log @between = [sha1, sha2] return self end
Source
# File lib/git/log.rb, line 130 def cherry dirty_log @cherry = true return self end
Source
# File lib/git/log.rb, line 148 def each(&block) check_log @commits.each(&block) end
Source
# File lib/git/log.rb, line 94 def grep(regex) dirty_log @grep = regex return self end
Source
# File lib/git/log.rb, line 58 def max_count(num_or_all) dirty_log @max_count = (num_or_all == :all) ? nil : num_or_all self end
The maximum number of commits to return
@example All commits returned by ‘git log`
git = Git.open('.') Git::Log.new(git).max_count(:all)
@param num_or_all [Integer, Symbol, nil] the number of commits to return, or
`:all` or `nil` to return all
@return [self]
Source
# File lib/git/log.rb, line 82 def object(objectish) dirty_log @object = objectish return self end
Source
# File lib/git/log.rb, line 100 def path(path) dirty_log @path = path return self end
Source
# File lib/git/log.rb, line 112 def since(date) dirty_log @since = date return self end
Source
# File lib/git/log.rb, line 143 def size check_log @commits.size rescue nil end
forces git log to run
Source
# File lib/git/log.rb, line 106 def skip(num) dirty_log @skip = num return self end
Source
# File lib/git/log.rb, line 118 def until(date) dirty_log @until = date return self end
Private Instance Methods
Source
# File lib/git/log.rb, line 175 def check_log if @dirty_flag run_log @dirty_flag = false end end
Source
# File lib/git/log.rb, line 183 def run_log log = @base.lib.full_log_commits( count: @max_count, all: @all, object: @object, path_limiter: @path, since: @since, author: @author, grep: @grep, skip: @skip, until: @until, between: @between, cherry: @cherry ) @commits = log.map { |c| Git::Object::Commit.new(@base, c['sha'], c) } end
actually run the ‘git log’ command