【发布时间】:2011-11-30 10:06:08
【问题描述】:
我在低级别的 git 存储库中进行黑客攻击,试图从中检索文件的历史记录。并且难以识别在同一版本中修改和重命名的文件。
我正在开发 C# 应用程序,我需要实现 git log --follow FILENAME 功能。
修改很简单:在附加到修订版的树中搜索具有给定路径的文件,如果 SHA1 不同 - Voilà!
重命名也很简单:如果按给定路径搜索不成功 — 查找具有相同 SHA1 的对象,如前所述,如果找到 — Voilà!
但是如果没有找到,可能是文件删除了,我的搜索结束了,或者在同一个版本中重命名和修改……但是如何区分这些情况呢?
我研究了我发现的关于 Git 内部的所有内容,但仍然不知道在这种情况下该怎么做,在不同修订版中对应于相同修改和重命名文件的树对象之间可能有什么共同点?
非常感谢您的帮助!
【问题讨论】:
标签: c# git repository low-level