summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/git/lib.rb4
-rw-r--r--lib/git/log.rb16
-rw-r--r--tests/units/test_log.rb12
3 files changed, 31 insertions, 1 deletions
diff --git a/lib/git/lib.rb b/lib/git/lib.rb
index 5e597ad..1aaf131 100644
--- a/lib/git/lib.rb
+++ b/lib/git/lib.rb
@@ -68,6 +68,8 @@ module Git
arr_opts << "-#{opts[:count]}" if opts[:count]
arr_opts << "--since=\"#{opts[:since]}\"" if opts[:since].is_a? String
arr_opts << "--until=\"#{opts[:until]}\"" if opts[:until].is_a? String
+ arr_opts << "--grep=\"#{opts[:grep]}\"" if opts[:grep].is_a? String
+ arr_opts << "--author=\"#{opts[:author]}\"" if opts[:author].is_a? String
arr_opts << "#{opts[:between][0].to_s}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2)
arr_opts << opts[:object] if opts[:object].is_a? String
arr_opts << '-- ' + opts[:path_limiter] if opts[:path_limiter].is_a? String
@@ -80,6 +82,8 @@ module Git
arr_opts << "-#{opts[:count]}" if opts[:count]
arr_opts << "--since=\"#{opts[:since]}\"" if opts[:since].is_a? String
arr_opts << "--until=\"#{opts[:until]}\"" if opts[:until].is_a? String
+ arr_opts << "--grep=\"#{opts[:grep]}\"" if opts[:grep].is_a? String
+ arr_opts << "--author=\"#{opts[:author]}\"" if opts[:author].is_a? String
arr_opts << "#{opts[:between][0].to_s}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2)
arr_opts << opts[:object] if opts[:object].is_a? String
arr_opts << '-- ' + opts[:path_limiter] if opts[:path_limiter].is_a? String
diff --git a/lib/git/log.rb b/lib/git/log.rb
index d620652..87a78a1 100644
--- a/lib/git/log.rb
+++ b/lib/git/log.rb
@@ -27,6 +27,18 @@ module Git
@object = objectish
return self
end
+
+ def author(regex)
+ dirty_log
+ @author = regex
+ return self
+ end
+
+ def grep(regex)
+ dirty_log
+ @grep = regex
+ return self
+ end
def path(path)
dirty_log
@@ -92,7 +104,9 @@ module Git
# actually run the 'git log' command
def run_log
log = @base.lib.full_log_commits(:count => @count, :object => @object,
- :path_limiter => @path, :since => @since, :until => @until, :between => @between)
+ :path_limiter => @path, :since => @since,
+ :author => @author, :grep => @grep,
+ :until => @until, :between => @between)
@commits = log.map { |c| Git::Object::Commit.new(@base, c['sha'], c) }
end
diff --git a/tests/units/test_log.rb b/tests/units/test_log.rb
index 7bcd83b..2d4b0d5 100644
--- a/tests/units/test_log.rb
+++ b/tests/units/test_log.rb
@@ -32,6 +32,18 @@ class TestLog < Test::Unit::TestCase
assert_equal(30, l.size)
end
+ def test_get_log_grep
+ l = @git.log.grep("search")
+ assert_equal(2, l.size)
+ end
+
+ def test_get_log_author
+ l = @git.log(5).author("chacon")
+ assert_equal(5, l.size)
+ l = @git.log(5).author("lazySusan")
+ assert_equal(0, l.size)
+ end
+
def test_get_log_since_file
l = @git.log.object('example.txt')
assert_equal(30, l.size)