使用 libgit2 只获取新的分支

Fetch only new branches with libgit2

是否可以使用 libgit2 只获取新分支?这意味着不会更新 refs/remotes/<existing_branch>,只会创建新的 refs/remotes/<new_branch>。不确定 refs/heads/<new_branch> 应该做什么,但它可能也应该被创建,对吗?

目前,我看到获得任何新分支获取行为的唯一方法是调用 git_remote_fetch() 并为 refspecs 设置 NULL。然而,这将更新整个存储库。或者,我应该调用 git_remote_ls() 并为 *fetch 创建显式 refspec 吗?

这些不是 Git 中任何地方都存在的语义,因此您必须自己完成。如果您想找出哪些分支是新的,则必须在获取本身之前使用 git_remote_ls(),找出哪些是新分支,然后使用 refspecs 列表仅下载那些。

我不知道你所说的使用 NULL 实现此行为是什么意思,因为无法设置默认的 refspecs 来做到这一点。这将表现得像 git fetch 并为给定的遥控器使用配置的 refspecs。