2016-09-29 86 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