From b7f8207d9ac8be2a301928dbf37ef9af69800a92 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 7 Aug 2024 13:10:21 +0100 Subject: fix(remote): `push` dont send rejected to server dont send refspec to a git server which was rejected due to a conflict highlighted on a different git server --- src/git_remote_helper.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/git_remote_helper.rs b/src/git_remote_helper.rs index 4cafba1..2333b66 100644 --- a/src/git_remote_helper.rs +++ b/src/git_remote_helper.rs @@ -641,7 +641,12 @@ async fn push( // TODO make async - check gitlib2 callbacks work async let git_config = git_repo.git_repo.config()?; - for (git_server_url, refspecs) in remote_refspecs { + for (git_server_url, remote_refspecs) in remote_refspecs { + let remote_refspecs = remote_refspecs + .iter() + .filter(|refspec| refspecs.contains(refspec)) + .cloned() + .collect::>(); if !refspecs.is_empty() { if let Ok(mut git_server_remote) = git_repo.git_repo.remote_anonymous(&git_server_url) { let auth = GitAuthenticator::default(); @@ -662,7 +667,7 @@ async fn push( Ok(()) }); push_options.remote_callbacks(remote_callbacks); - let _ = git_server_remote.push(&refspecs, Some(&mut push_options)); + let _ = git_server_remote.push(&remote_refspecs, Some(&mut push_options)); let _ = git_server_remote.disconnect(); } } -- cgit v1.2.3