我想知道一种在我学习git核心架构时检测指定文件中最近更改的算法。
您知道git log -n1 -- <file>
显示指定文件中最近更改的提交。了解最新的变化非常简单。我随便想自己实现它。
我使用libgit2来处理每个提交。我花了几天但我无法理解。 使用DAG结构的git commit模型很难为我寻找。
[for example]
o---o---o---o---o---M--[HEAD]
`-o------M-o-o'
`-C-o-'
o means: a commit
M means: merge commit
C means: rechange change in the specified file
了解检测指定文件中最近更改的最佳方法是什么?
答案 0 :(得分:0)
您需要遍历父提交。合并提交有2个或更多父母。最终你最终会进入一个共同的提交,即分支。因此,如果您的函数以递归方式遍历每个父级,则需要将已检查的提交作为返回值传回,这样您就不会再次遍历相同的提交。或者,如果找到更改,则可以返回包含更改和短路的提交。