繁体   English   中英

LibGit2Sharp计算文件更改的频率

[英]LibGit2Sharp Count how often a file has changed

我有一个超过10.000个条目的存储库。 我不想照顾重命名的文件。 计算对文件所做的更改数量的最佳方法是什么?

我的想法是遍历所有提交,并将文件的target.sha及其父提交进行比较。 如果SHA相同,则文件未更改。 如果SHA不同,则发现文件更改,这意味着这是新版本。

foreach(Commit c in repository.Commits)
{
//DO THE WORK
}

这需要一些时间,但是这是我目前可以获得的最快速度。

也许有人有更好的主意?

您描述的方式基本上和您将要获得的一样快。 剩下的就是针对您的解决方案实施而进行的任何优化,但是如果没有发布代码,我们将无法对此发表评论。

比较导致文件的树,而不是仅比较文件的树,可能节省一些分配和编组成本; 但是从算法上讲,您真的不会比比较树条目更好。

这实际上是您最好的选择。 与Git解决问题所采用的方法相同,因此要使其更好,更快,更可靠地工作将需要大量的工作。 如果您只关心计数更改发生的提交次数,则可以尝试使用像MD5这样的更快的哈希算法。

注意:从理论上讲,MD5可能会遇到一些精度问题,但仅适用于非常大的数据集,它足以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM