最近我想从repo中复制文件,在rust中使用Repository::clone
,但此函数不支持分支。我想问一下如何从分支复制文件。
我目前使用的是git 2版本0.17.1和rust版本1.69.0(84 c898 d 65 2023-04-16)。
let repo = match Repository::clone(repo_url, temp_dir.path()) {
Ok(repo) => repo,
Err(e) => panic!("failed to clone: {}", e),
};
println!("Cloned {} to {}", repo_url, temp_dir.path().display());
repo.remote_anonymous(repo_url)?
.fetch(&[branch_name], None, None)?;
let head = repo.head().unwrap();
let oid = head.target().unwrap();
let commit = repo.find_commit(oid).unwrap();
let branch = repo
.branch(branch_name, &commit, false)
.expect("Faild to find branch");
let obj = repo
.revparse_single(&("refs/heads/".to_owned() + branch_name))
.unwrap();
repo.set_head(&("refs/heads/".to_owned() + branch_name));
repo.checkout_tree(&obj, None);
这是我试过的代码。分支已更改。但我不知道如何将那个分支中的文件与已经复制的文件交换。
1条答案
按热度按时间blmhpbnm1#
如果您阅读
clone
的文档,它会告诉您:有关详细信息,请参阅
RepoBuilder
结构。然后如果你转到
RepoBuilder
,有一个branch
方法。