Class: Git::Log
Overview
Builds and executes a git log
query.
This class provides a fluent interface for building complex git log
queries.
The query is lazily executed when results are requested either via the modern
#execute
method or the deprecated Enumerable methods.
Constant Summary collapse
- Result =
An immutable, Enumerable collection of
Git::Object::Commit
objects. Returned byGit::Log#execute
. Data.define(:commits) do include Enumerable def each(&block) = commits.each(&block) def last = commits.last def [](index) = commits[index] def to_s = map(&:to_s).join("\n") def size = commits.size end
Deprecated Enumerable Interface collapse
-
#[](index)
deprecated
Deprecated.
Use #execute and call the method on the result.
-
#each
deprecated
Deprecated.
Use #execute and call
each
on the result. -
#first
deprecated
Deprecated.
Use #execute and call the method on the result.
-
#last
deprecated
Deprecated.
Use #execute and call the method on the result.
-
#size
deprecated
Deprecated.
Use #execute and call
size
on the result. -
#to_s
deprecated
Deprecated.
Use #execute and call
to_s
on the result.
Instance Method Summary collapse
- #all
- #author(regex)
- #between(val1, val2 = nil)
- #cherry
-
#execute ⇒ Git::Log::Result
Executes the git log command and returns an immutable result object.
- #grep(regex)
-
#initialize(base, max_count = 30) ⇒ Log
constructor
Create a new Git::Log object.
-
#max_count(num)
Set query options using a fluent interface.
- #merges
- #object(objectish)
- #path(path)
- #since(date)
- #skip(num)
- #until(date)
Constructor Details
#initialize(base, max_count = 30) ⇒ Log
Create a new Git::Log object
46 47 48 49 50 51 |
# File 'lib/git/log.rb', line 46 def initialize(base, max_count = 30) @base = base @options = {} @dirty = true self.max_count(max_count) end |
Instance Method Details
#[](index)
Use #execute and call the method on the result.
137 138 139 140 141 142 143 |
# File 'lib/git/log.rb', line 137 def [](index) Git::Deprecation.warn( 'Calling Git::Log#[] is deprecated. Call #execute and then #[] on the result object.' ) run_log_if_dirty @commits&.[](index) end |
#all
57 |
# File 'lib/git/log.rb', line 57 def all = set_option(:all, true) |
#author(regex)
59 |
# File 'lib/git/log.rb', line 59 def (regex) = set_option(:author, regex) |
#between(val1, val2 = nil)
65 |
# File 'lib/git/log.rb', line 65 def between(val1, val2 = nil) = set_option(:between, [val1, val2]) |
#cherry
66 |
# File 'lib/git/log.rb', line 66 def cherry = set_option(:cherry, true) |
#each
Use #execute and call each
on the result.
92 93 94 95 96 97 98 |
# File 'lib/git/log.rb', line 92 def each(&) Git::Deprecation.warn( 'Calling Git::Log#each is deprecated. Call #execute and then #each on the result object.' ) run_log_if_dirty @commits.each(&) end |
#execute ⇒ Git::Log::Result
Executes the git log command and returns an immutable result object
This is the preferred way to get log data. It separates the query building from the execution, making the API more predictable.
84 85 86 87 |
# File 'lib/git/log.rb', line 84 def execute run_log_if_dirty Result.new(@commits) end |
#first
Use #execute and call the method on the result.
119 120 121 122 123 124 125 |
# File 'lib/git/log.rb', line 119 def first Git::Deprecation.warn( 'Calling Git::Log#first is deprecated. Call #execute and then #first on the result object.' ) run_log_if_dirty @commits&.first end |
#grep(regex)
60 |
# File 'lib/git/log.rb', line 60 def grep(regex) = set_option(:grep, regex) |
#last
Use #execute and call the method on the result.
128 129 130 131 132 133 134 |
# File 'lib/git/log.rb', line 128 def last Git::Deprecation.warn( 'Calling Git::Log#last is deprecated. Call #execute and then #last on the result object.' ) run_log_if_dirty @commits&.last end |
#max_count(num)
Set query options using a fluent interface.
Each method returns self
to allow for chaining.
56 |
# File 'lib/git/log.rb', line 56 def max_count(num) = set_option(:count, num == :all ? nil : num) |
#merges
67 |
# File 'lib/git/log.rb', line 67 def merges = set_option(:merges, true) |
#object(objectish)
58 |
# File 'lib/git/log.rb', line 58 def object(objectish) = set_option(:object, objectish) |
#path(path)
61 |
# File 'lib/git/log.rb', line 61 def path(path) = set_option(:path_limiter, path) |
#since(date)
63 |
# File 'lib/git/log.rb', line 63 def since(date) = set_option(:since, date) |
#size
Use #execute and call size
on the result.
101 102 103 104 105 106 107 |
# File 'lib/git/log.rb', line 101 def size Git::Deprecation.warn( 'Calling Git::Log#size is deprecated. Call #execute and then #size on the result object.' ) run_log_if_dirty @commits&.size end |
#skip(num)
62 |
# File 'lib/git/log.rb', line 62 def skip(num) = set_option(:skip, num) |
#to_s
Use #execute and call to_s
on the result.
110 111 112 113 114 115 116 |
# File 'lib/git/log.rb', line 110 def to_s Git::Deprecation.warn( 'Calling Git::Log#to_s is deprecated. Call #execute and then #to_s on the result object.' ) run_log_if_dirty @commits&.map(&:to_s)&.join("\n") end |
#until(date)
64 |
# File 'lib/git/log.rb', line 64 def until(date) = set_option(:until, date) |