How do you provide credentials (when fetching)? #786
-
| I'm trying to fetch from a private repository. My code looks something like this (with error handling replaced by  let repo = gix::discover(".").unwrap();
let outcome = repo.find_default_remote(Direction::Fetch)
    .unwrap()
    .unwrap()
    .connect(Direction::Fetch, gix::progress::Discard)
    .unwrap()
    .prepare_fetch(Default::default())
    .unwrap()
    .with_dry_run(true)
    .receive(&gix::interrupt::IS_INTERRUPTED)
    .unwrap()As far as I can tell, in order to provide credentials to the fetch operation, I would have to call      // ...
    .connect(Direction::Fetch, gix::progress::Discard)
    .unwrap()
    .with_credentials(|action| match action {
        Action::Get(ctx) => Ok(Some(Outcome {
            username: Some("username"),
            password: Some("password"),
            quit: false,
            next: todo!(),
        })),
        Action::Store(_) => todo!(),
        Action::Erase(_) => todo!(),
    })
    // ...This is as far as I've gotten however. I'm not sure why I'm expected to handle the  On a possibly related note, the default configuration does not handle authentication in the same way as my  | 
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 5 replies
-
| The reason this seems a bit cumbersome is that it's essentially the  
 
 
 | 
Beta Was this translation helpful? Give feedback.
The reason this seems a bit cumbersome is that it's essentially the
credential-helperprotocol turned into a Rust API. The handler can obtain credentials, and later store or erase them depending on whether they worked or not. Such calls you would be ignoring then.ctxcan be turned intonextvianext: ctx.into()which should be fine as the username and password seem to be hardcoded anyway. Suffice to say that I consider this an example and in real life this wouldn't be hardedcoded like that.