diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-08-07 13:10:21 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-08-07 13:12:46 +0100 |
| commit | b7f8207d9ac8be2a301928dbf37ef9af69800a92 (patch) | |
| tree | 92b95612b859b82ee8866969a55d596d0c695753 | |
| parent | 843a3c2dfebf661bd47f0a0faf2849cc660b7349 (diff) | |
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
| -rw-r--r-- | src/git_remote_helper.rs | 9 |
1 files changed, 7 insertions, 2 deletions
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( | |||
| 641 | 641 | ||
| 642 | // TODO make async - check gitlib2 callbacks work async | 642 | // TODO make async - check gitlib2 callbacks work async |
| 643 | let git_config = git_repo.git_repo.config()?; | 643 | let git_config = git_repo.git_repo.config()?; |
| 644 | for (git_server_url, refspecs) in remote_refspecs { | 644 | for (git_server_url, remote_refspecs) in remote_refspecs { |
| 645 | let remote_refspecs = remote_refspecs | ||
| 646 | .iter() | ||
| 647 | .filter(|refspec| refspecs.contains(refspec)) | ||
| 648 | .cloned() | ||
| 649 | .collect::<Vec<String>>(); | ||
| 645 | if !refspecs.is_empty() { | 650 | if !refspecs.is_empty() { |
| 646 | if let Ok(mut git_server_remote) = git_repo.git_repo.remote_anonymous(&git_server_url) { | 651 | if let Ok(mut git_server_remote) = git_repo.git_repo.remote_anonymous(&git_server_url) { |
| 647 | let auth = GitAuthenticator::default(); | 652 | let auth = GitAuthenticator::default(); |
| @@ -662,7 +667,7 @@ async fn push( | |||
| 662 | Ok(()) | 667 | Ok(()) |
| 663 | }); | 668 | }); |
| 664 | push_options.remote_callbacks(remote_callbacks); | 669 | push_options.remote_callbacks(remote_callbacks); |
| 665 | let _ = git_server_remote.push(&refspecs, Some(&mut push_options)); | 670 | let _ = git_server_remote.push(&remote_refspecs, Some(&mut push_options)); |
| 666 | let _ = git_server_remote.disconnect(); | 671 | let _ = git_server_remote.disconnect(); |
| 667 | } | 672 | } |
| 668 | } | 673 | } |