jmw*_*ght 5 git pull rust libgit2
我正在使用git2-rs在Rust应用程序中实现一些标准的git功能.我一直在阅读git内部,并了解在高级别"git pull"是一个"git fetch",然后是"git merge",但我仍然无法理解如何使它与git2-rs一起工作.有对一个问题的讨论在这里在那里的同意,GIT2-RS"混帐拉"的例子将是很好的,但一个是从未创建.有一个在该讨论中进行硬重置的示例,但我想避免覆盖本地更改(因此合并).我一直无法在使用git2-rs的任何其他代码库中找到示例.
该"混帐复位"的例子在这里展示了如何获得一个OID后,取指,我认为,但合并功能需要一个AnnotatedCommit,我不知道如何在两者之间转换,或者即使是走在正确的方向.
尝试类似的方法:
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()))?;
Run Code Online (Sandbox Code Playgroud)
使用
pub fn find_last_commit(repo: &Repository) -> Result<Commit, RepoError> {
let obj = repo.head()?.resolve()?.peel(ObjectType::Commit)?;
match obj.into_commit() {
Ok(c) => Ok(c),
_ => Err(RepoError::new("commit error")),
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |