libgit2:如何在两个标签之间找到所有的提交?

4
我想知道如何使用C API在Git中查找两个标签之间的所有提交。我知道可以使用CLI工具轻松完成此操作:
git log [first commit]..[second commit ] --pretty=oneline 然而,我似乎无法弄清楚如何使用C API实现它。我卡住的问题是当图形中出现循环时。
这是我使用Objective-Git的一些Objective-C代码,但由于大多数人不了解Objective-C,因此我很高兴得到C API或其他Git API的答案。我想我将不得不保留以前遍历过的提交的字典之类的东西?
- (void)traverseCommits: (GTCommit *)start withGoal: (GTCommit *)goal withHistory: (NSMutableDictionary *)history{
    NSLog(@"%@", start.shortSHA);
    if ([start.SHA isEqualToString:goal.SHA]) {
        return;
    }
    for (GTCommit *c in start.parents) {
        //[history setObject:c forKey:c.SHA];
        if(![c.SHA isEqualToString:goal.SHA])
            [self traverseCommits:c withGoal:goal withHistory:history];

    }
}
1个回答

5

revwalk函数是为这种用例设计的。使用git_revwalk_push_ref推送较新的标签,并使用git_revwalk_hide_ref隐藏较旧的标签。然后使用git_revwalk_next遍历范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接