在什么情况下 libgit2 比 git 快?

In what scenarios libgit2 is faster than git?

我可以编写一个 Zsh 模块,其中包含 git 命令功能的某些子集。动机是加速提示。我使用的示例提示确实是:

    changed_files=()
    git diff --quiet 2> /dev/null || changed_files=(${(f)"$( git diff --name-only 2>/dev/null )"})

输入例如linux-内核回购。我想知道 libgit2 是否可以对某些典型任务提供更多控制,并以这种或其他方式更快。

我猜可能性很小,因为 Git 存储库结构简单,所以 git 代码是它的一对一反映。但谁知道呢?任何明显的 libgit2 性能特征都符合我的兴趣。

典型的情况是当您有多个链式 git 调用时,每个调用都必须打开一个 shell/process。

但在 2017 年,大多数使用 libgit2 的工具都开始回到包装方法(包装 git 调用而不是依赖 libgit2) : 示例 Visual Studio 15.

Git 本身继续定期发展并修复错误或引入新功能,它们并不总是存在于 libgit2 中(如 )。

在您的情况下,对于基本的链式 git 函数,调用 libgit2 的 C 程序可能 更快,但您需要对其进行测量.