我正在尝试使用 libgit2 执行以下等效操作:
git log -z --all --topo-order
我在 1) 找到将所有 refs 推入 revwalker 的最简单方法和 2) 以相同顺序获得结果时遇到了麻烦。尽管我尝试了拓扑和时间排序的各种组合,但我一直看到较旧的分支出现在顶部附近。
我最近的尝试涉及到 call git_revwalk_push_glob(walk, "refs/*")
,但并不是所有的分支都出来了。一个测试仓库有两个本地分支,一个(当前的)丢失了。
我实际上是在 Objective-git 中这样做的,但是 GTEnumerator 接口有点受限,所以我不得不扩展它。
更新:我继续手动推送 refs/heads、refs/remotes 和 refs/tags(以及所有 stash,因为我实际上想要的不仅仅是顶部)。排序问题仍然存在。