我尝试在 git repo 的本地副本中获取某个日期之后完成的提交,然后提取对文件的相关修改。
如果我想将此与 git 命令进行比较,它将是:
git log -p --reverse --after="2016-10-01"
这是我使用的脚本:
require "rugged"
require "date"
git_dir = "../ruby-gnome2/"
repo = Rugged::Repository.new(git_dir)
walker = Rugged::Walker.new(repo)
walker.sorting(Rugged::SORT_DATE| Rugged::SORT_REVERSE)
walker.push(repo.head.target)
walker.each do |commit|
c_time = Time.at(commit.time)
next unless c_time >= Date.new(2016,10,01).to_time
puts c_time
puts commit.diff.size
puts commit.diff.stat.inspect
end
问题是看起来很多文件都被修改了,这里是这个脚本输出的结尾:
2016-10-22 17:33:37 +0200
2463
[2463, 0, 271332]
这意味着有 2463 个文件被修改/删除/替换。虽然git log -p --reverse --after="2016-10-22"
显示只有 2 个文件被修改。
如何获得与 git 命令相同的结果?即我怎样才能找到这个提交修改的真实文件?