use gix_features::progress::Progress; use gix_transport::{client, Service}; use maybe_async::maybe_async; use crate::{ credentials, handshake::{Error, Outcome}, }; /// Perform a handshake with the server on the other side of `transport`, with `authenticate` being used if authentication /// turns out to be required. `extra_parameters` are the parameters `(name, optional value)` to add to the handshake, /// each time it is performed in case authentication is required. /// `progress` is used to inform about what's currently happening. #[allow(clippy::result_large_err)] #[maybe_async] pub async fn upload_pack( transport: T, authenticate: AuthFn, extra_parameters: Vec<(String, Option)>, progress: &mut impl Progress, ) -> Result where AuthFn: FnMut(credentials::helper::Action) -> credentials::protocol::Result, T: client::Transport, { crate::handshake(transport, Service::UploadPack, authenticate, extra_parameters, progress).await }