1

我想知道一种算法,它可以在我学习 git 核心架构时检测指定文件中的最近更改。

您知道git log -n1 -- <file>在指定文件中显示最近更改的提交。知道最新的变化非常简单。我随便想自己实现它。

我使用 libgit2 来遍历每个提交。我花了几天时间,但我无法理解。git commit 模型使用类似 DAG 的结构,我很难找到它。

[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

检测指定文件中最近更改的最佳方法是什么?

4

1 回答 1

0

您将需要遍历父提交。合并提交有 2 个或更多父级。最终你会得到一个共同的提交,即分支。因此,如果您的函数递归地遍历每个父级,您需要将已经检查过的提交作为返回值传回,这样您就不会再次遍历相同的提交。或者,如果发现更改,则可以返回包含更改的提交并短路。

于 2012-01-04T06:34:03.087 回答