From 7334ec3708d67618cabbc0b9c5be5be9f69e953d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Sat, 2 Mar 2019 04:27:14 +0100 Subject: [PATCH] Only push once every iteration --- src/lib.rs | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 602a73e..e6af634 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -415,35 +415,39 @@ impl BenchmarkRepository Err(error) => panic!("could not write commit: {}", error), }; - let push_refspec = format!("refs/remotes/origin/results:refs/heads/results"); - - trace!("created commit “{}”, using refspec “{}”", commit_id, push_refspec); - - let mut remote_callbacks = RemoteCallbacks::new(); - remote_callbacks.credentials( - |_, _, _| - { - match Cred::ssh_key_from_agent(&self.ssh_user) - { - Ok(value) => Ok(value), - Err(error) => panic!("could not retrieve key pair for SSH authentication as user “{}”: {}", self.ssh_user, error), - } - }); - - remote_callbacks.push_update_reference( - |reference, status| BenchmarkRepository::push_update_reference_callback(reference, status)); - - let mut push_options = PushOptions::new(); - push_options.remote_callbacks(remote_callbacks); - - let mut remote = self.repository.find_remote("origin").expect(""); - remote.push(&[&push_refspec], Some(&mut push_options)).expect("couldn’t push"); + trace!("created commit “{}”", commit_id); changed = true; false } ); + + if changed + { + let push_refspec = format!("refs/remotes/origin/results:refs/heads/results"); + trace!("using push refspec “{}”", push_refspec); + + let mut remote_callbacks = RemoteCallbacks::new(); + remote_callbacks.credentials( + |_, _, _| + { + match Cred::ssh_key_from_agent(&self.ssh_user) + { + Ok(value) => Ok(value), + Err(error) => panic!("could not retrieve key pair for SSH authentication as user “{}”: {}", self.ssh_user, error), + } + }); + + remote_callbacks.push_update_reference( + |reference, status| BenchmarkRepository::push_update_reference_callback(reference, status)); + + let mut push_options = PushOptions::new(); + push_options.remote_callbacks(remote_callbacks); + + let mut remote = self.repository.find_remote("origin").expect(""); + remote.push(&[&push_refspec], Some(&mut push_options)).expect("couldn’t push"); + } } info!("all jobs done, all results uploaded");