gitbutlerapp/gitbutler · error · anyhow::Error
Review requests for forge {forge:?} are not implemented yet.
Error message
Review requests for forge {forge:?} are not implemented yet. What it means
`request_review()` asks specific users to review a review (PR/MR). Only the GitHub backend is wired (via `but_github::pr::request_reviewers`); other forges fall into the wildcard arm and fail before any network call.
Source
Thrown at crates/but-forge/src/review.rs:1230
storage: &but_forge_storage::Controller,
) -> Result<()> {
let crate::forge::ForgeRepoInfo {
forge, owner, repo, ..
} = forge_repo_info;
match forge {
ForgeName::GitHub => {
let preferred_account = preferred_forge_user.as_ref().and_then(|user| user.github());
but_github::pr::request_reviewers(
preferred_account,
owner,
repo,
review_number,
logins,
storage,
)
.await
}
_ => Err(anyhow::anyhow!(
"Review requests for forge {forge:?} are not implemented yet."
)),
}
}
/// Withdraw review requests for the given users on a review.
pub async fn withdraw_review_request(
preferred_forge_user: &Option<crate::ForgeUser>,
forge_repo_info: &crate::forge::ForgeRepoInfo,
review_number: usize,
logins: &[String],
storage: &but_forge_storage::Controller,
) -> Result<()> {
let crate::forge::ForgeRepoInfo {
forge, owner, repo, ..
} = forge_repo_info;
match forge {
ForgeName::GitHub => {View on GitHub (pinned to caf1f223d3)
Solutions
- Request reviewers through the forge's own UI/API for non-GitHub reviews.
- Gate the request action on `forge == ForgeName::GitHub`.
- Implement reviewer-request calls in `but_gitlab`/`but_bitbucket` and extend the match at crates/but-forge/src/review.rs:1222-1230.
Example fix
// before
request_review(&user, &info, number, &["alice".into()], &storage).await?;
// after
if !matches!(info.forge, ForgeName::GitHub) {
return Ok(()); // reviewer requests are GitHub-only
}
request_review(&user, &info, number, &["alice".into()], &storage).await?; Defensive patterns
Strategy: validation
Validate before calling
use but_forge::forge::ForgeName;
if !matches!(info.forge, ForgeName::GitHub) {
// hide 'request review' submit; only GitHub implements it
} Type guard
fn review_requests_supported(forge: &but_forge::forge::ForgeName) -> bool {
matches!(forge, ForgeName::GitHub)
} Try / catch
match request_review(&user, &info, number, logins, &storage).await {
Ok(()) => {}
Err(e) if e.to_string().contains("not implemented yet") => { /* no-op; inform user */ }
Err(e) => return Err(e),
} Prevention
- Disable the whole reviewer-request flow (list + request + withdraw) behind one forge check.
- Don't fire the request call as part of a fire-and-forget queue on non-GitHub forges.
- Track which review mutations exist per forge in a capability module, not in scattered ifs.
When it happens
Trigger: Calling `request_review` with a list of logins for a review hosted on GitLab, Bitbucket or Azure — typically the submit action of a reviewer picker on a non-GitHub repo.
Common situations: Reviewer-request flows built against GitHub and reused across forges; multi-forge UIs where the button is visible everywhere; SDK automations that request reviews programmatically.
Related errors
- Reviewer candidates for forge {forge:?} are not implemented
- Review labels for forge {forge:?} are not implemented yet.
- Repository labels for forge {forge:?} are not implemented ye
- Review comments for forge {forge:?} are not implemented yet.
- Reactions for forge {forge:?} are not implemented yet.
AI-assisted analysis of gitbutlerapp/gitbutler@caf1f223d3 (2026-08-20).
Data as JSON: /api/errors/d95b2944cd0b701a.
Report an issue: GitHub.