迭代 Ruby 到 git 特定分支的提交
Iterate with Ruby through git commits for a particular branch
我想使用 Rugged 遍历特定分支上的所有提交,从最旧的(第一个)到最新的(最后一个)。我想检查每个 SHA1 和评论。
也许我最好只 运行 'git log --reverse' 并解析结果,但只要有这个很好的 Ruby 库来处理 Git 我想我会用的。
请原谅我,但我不太明白如何从 Rugged 或 libgit2 文档中做我想做的事情。
你可以创建一个 commit walker,像这样:
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 and read the testing code 以了解您可以使用 Rugged 做什么。
我想使用 Rugged 遍历特定分支上的所有提交,从最旧的(第一个)到最新的(最后一个)。我想检查每个 SHA1 和评论。
也许我最好只 运行 'git log --reverse' 并解析结果,但只要有这个很好的 Ruby 库来处理 Git 我想我会用的。
请原谅我,但我不太明白如何从 Rugged 或 libgit2 文档中做我想做的事情。
你可以创建一个 commit walker,像这样:
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 and read the testing code 以了解您可以使用 Rugged 做什么。