git2-rs Rust板条箱如何进行“ git pull”?

时间:2019-01-08 22:44:18

标签: git rust pull libgit2

我正在使用git2-rs在Rust应用程序中实现一些标准git功能。我一直在阅读git的内部知识,并且了解到,在较高的层次上,“ git pull”是“ git fetch”,然后是“ git merge”,但在理解如何使其与git2-rs结合使用方面仍然有困难。关于问题here的讨论中,人们同意git2-rs“ git pull”示例会很好,但是从未创建过。在该讨论中有一个进行硬重置的示例,但我想避免覆盖本地更改(因此合并)。我也无法在其他任何使用git2-rs的代码库中找到示例。

“ git reset”示例here显示了我认为如何在获取后获取OID,但是merge函数需要一个AnnotatedCommit,而且我不确定如何在两者之间进行转换,或者即使这是正确的方向。

1 个答案:

答案 0 :(得分:0)

尝试类似的东西:

\033

使用

        let our_commit = find_last_commit()?;
        let reference = repo.find_reference("FETCH_HEAD")?;
        let their_commit = reference.peel_to_commit()?;
        let _index = repo
                .merge_commits(&our_commit, &their_commit, Some(&MergeOptions::new()))?;