2016-09-29 82 views
0

在使用git_revwalk(通过Objective-Git的GTEnumerator),我试图让最近更新的分支先订购。我打电话给gt_revwalk_push,按提交日期排序,但它没有效果。排序,反向排序和未排序都是相同的。git_revwalk忽略推送参考的顺序?

使用GIT_SORT_TIME没有GIT_SORT_TOPOLOGICAL接近,但我确实需要拓扑排序,所以我设置了两个标志。

有没有办法让git_revwalk按照我给他们的顺序使用refs?

+0

我对Objective-Git一无所知,但要求提供一个topo排序*和*基于时间的排序就像是要求在下午1点之前到达中午,因为1小于12.您必须放弃其中一个标准:你不能同时获得。 – torek

+0

使用这两个标志,我会期望来自并行分支的提交相对于彼此排序。这将有可能在一定程度上不违反拓扑秩序。但无论如何,这是与我的真正问题切题。例如,我希望最新的提交应该首先出现,因为这是我首先推送的引用,而这不会发生。 – Uncommon

+0

......当然,这是假设第一个ref指向一个没有孩子的提交,它在我的测试用例中做了。 – Uncommon

回答

1

libgit2通常不会提供与git完全相同的拓扑排序,因为有多种可能的拓扑排序都是正确的。

A recent PR从git移植更多的代码使输出更稳定的其他原因,所以你使用它。指定拓扑和基于时间的排序(GIT_SORT_TOPOLOGICAL | GIT_SORT_TIME)(相当于git rev-list--date-order)将按照当前的master对按时间请求的提示进行排序。

+0

再次感谢:) – Uncommon

+0

我终于有机会尝试此操作,并且效果很好。 – Uncommon