gpt4 book ai didi

ruby - 获取文件更改的最新提交

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:35 25 4
gpt4 key购买 nike

我手头的任务是弄清楚最后一次提交的提交 ID 是什么,具体文件在哪里更改了。我正在使用 ruby /坚固耐用。我想出的唯一解决方案是遍历所有提交,在与该文件的提交关联的树中搜索文件,并将该文件的 oid 与第一个(最新)提交的文件的 oid 进行比较:

def commit_oid commit, file
commit.tree.walk( :postorder ) { | root, obj |
return obj[ :oid ] if "#{root}#{obj[ :name ]}" == file
}

raise "\'#{file}\' not found in repository"
end

def find_last_commit file
johnny = Rugged::Walker.new( get_repository )
johnny.push get_repository.head.target

oid = commit_oid johnny.first, file
old_commit = johnny.first.oid

johnny.each do | commit |
new_oid = commit_oid commit, file

return old_commit if new_oid != oid

old_commit = commit.oid
end

old_commit
end

这行得通,但似乎很复杂。必须有一种更简单的方法来获取信息,“提交后发生了什么变化”。有没有更简单、更直接的方法来完成同样的事情?

最佳答案

正在运行 $ git log <file>将为您提供仅更改给定文件的提交的反向时间顺序日志。 $ git whatchanged <file>将做同样的事情,添加一行包含更改的详细信息(即模式更改、更改类型)。它非常适合视觉目的,但不适合编写脚本。

如果您只需要最近一次提交的哈希值,下面的方法会很有效:$ git rev-list --max-count 1 HEAD <file>

关于ruby - 获取文件更改的最新提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12087349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com