diff options
Diffstat (limited to 'src/bin/ngit')
| -rw-r--r-- | src/bin/ngit/sub_commands/init.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/bin/ngit/sub_commands/init.rs b/src/bin/ngit/sub_commands/init.rs index 5c43e6e..5ff57d5 100644 --- a/src/bin/ngit/sub_commands/init.rs +++ b/src/bin/ngit/sub_commands/init.rs | |||
| @@ -282,12 +282,23 @@ fn resolve_grasp_servers( | |||
| 282 | 282 | ||
| 283 | if !interactive || cli.defaults || state.has_coordinate() || cli.force { | 283 | if !interactive || cli.defaults || state.has_coordinate() || cli.force { |
| 284 | // Prefer grasp servers from my existing announcement, then user's grasp | 284 | // Prefer grasp servers from my existing announcement, then user's grasp |
| 285 | // list, then system fallbacks | 285 | // list (or trusted maintainer's servers as fallback), then system defaults |
| 286 | let existing = detect_existing_grasp_servers(my_ref.as_ref(), &args.relay, &[], identifier); | 286 | let existing = detect_existing_grasp_servers(my_ref.as_ref(), &args.relay, &[], identifier); |
| 287 | if !existing.is_empty() { | 287 | if !existing.is_empty() { |
| 288 | return Ok(existing); | 288 | return Ok(existing); |
| 289 | } | 289 | } |
| 290 | return Ok(grasp_servers_from_user_or_fallback(user_ref, client)); | 290 | // For co-maintainer state, pass the repo_ref so the trusted |
| 291 | // maintainer's grasp servers can be used as a fallback. | ||
| 292 | let trusted_maintainer_repo_ref = if matches!(state, InitState::CoMaintainer { .. }) { | ||
| 293 | state.repo_ref() | ||
| 294 | } else { | ||
| 295 | None | ||
| 296 | }; | ||
| 297 | return Ok(grasp_servers_from_user_or_fallback( | ||
| 298 | user_ref, | ||
| 299 | trusted_maintainer_repo_ref, | ||
| 300 | client, | ||
| 301 | )); | ||
| 291 | } | 302 | } |
| 292 | 303 | ||
| 293 | // Interactive prompt | 304 | // Interactive prompt |