Open
Description
Hi, I am making a tool to mirror my repo from one git hosting platform to github. What I want to do is using git2rs to achieve:
- git clone --bare https://platfrom.repo.git
- cd to the cloned repo
- git push --mirror https://github.repo.git
Step 1 and 2 are successful, but I am not able to implement step 3. Can anyone tell me what is the git2rs equivalent to step 3?
I tried the following appoach:
- query all refs of local repo and push to remote, the issue is that the deleted tags/branches are not pushed
- do not specify refs, set the config for remote as mirror, nothing is pushed after the program runs
pub fn push_mirror(repo_path: &PathBuf, remote_url: &str) -> Result<(), git2::Error> {
let repo = Repository::open(repo_path)?;
if repo.find_remote("mirror").is_ok() {
repo.remote_delete("mirror")?;
}
let mut remote = repo.remote_with_fetch("mirror", remote_url, "+refs/*:refs/*")?;
let mut config = repo.config()?;
config.set_bool("remote.mirror.mirror", true)?;
let mut push_opts = PushOptions::new();
remote.push(&[] as &[&str], Some(&mut push_opts))?;
Ok(())
}
Metadata
Assignees
Labels
No labels
Activity