通过针对特定分支的git提交迭代Ruby

时间:2015-01-17 02:38:51

标签: git libgit2 rugged

我想使用Rugged迭代特定分支上的所有提交,从最旧的(第一个)到最新的(最后一个)。我想检查SHA1和每个的评论。

也许我最好只运行'git log --reverse'并解析结果,但只要有一个漂亮的Ruby库来处理Git我就会使用它。

原谅我,但我无法弄清楚如何从Rugged或libgit2文档中做我想做的事。

1 个答案:

答案 0 :(得分:2)

您可以创建一个提交步行器,如下所示:

require 'rugged'

repo = Rugged::Repository.new('/path/for/your/repo')
walker = Rugged::Walker.new(repo)
walker.sorting(Rugged::SORT_REVERSE)
walker.push(repo.branches["master"].target_id)

walker.each do |commit| 
  puts "commit #{commit.oid}"
  puts "Author: #{commit.author[:name]} <#{commit.author[:email]}>"
  puts "Date:   #{commit.author[:time]}"
  puts "\n    #{commit.message}\n"
end
walker.reset

您可以查看documentation并阅读存储库中的testing code,了解您可以使用Rugged做什么。