如何检索文件的历史记录?

shy*_*kov 21 git history libgit2 libgit2sharp

我得到了另一个libgit2问题,非常感谢你的帮助.

我正在尝试检索文件历史记录,即更改此文件的提交列表.而且它似乎非常传统......据我所见,没有任何功能.

我能想到的唯一方法是使用版本控制API迭代修订版本,检查附加到提交的树对象并在那里搜索给定文件,如果找到,则将提交添加到我的列表中,否则继续下一次提交.

但它对我来说似乎不是最理想的......

可能是有任何其他方法,例如,直接查看.git文件夹并获取所需信息吗?

提前谢谢了!

nul*_*ken 15

但它对我来说似乎不是最理想的......

你的方法是正确的.要小心你必须要反对:

  • 普通重命名(相同的对象哈希,不同的树条目名称)
  • 在同一个提交中发生重命名和内容更新(不同的哈希,不同的树条目名称.需要文件内容分析和比较功能,这在libgit2中不可用)
  • 多个父级历史记录(已合并的两个分支,并且以不同方式修改了同一文件)

可能是有任何其他方法,例如,直接查看.git文件夹并获取所需信息吗?

虽然理解.git文件夹布局总是花费很多时间,但我担心这不会帮助您解决这个特定的文件历史问题.

注意:这个问题与libgit2sharp问题非常接近:如何获取影响给定文件的最后一次提交?

更新

拉请求#963添加了这个功能.

它是自LibGit2Sharp.0.22.0-pre20150415174523预发布NuGet包以来可用的.