nikivdev/code · error
{} repo URL required
Error message
{} repo URL required What it means
ensure_repo clones a repo when the destination is missing and requires a repo URL for that case; it throws when the repo is absent from dest and no repo_url argument was supplied. When the repo already exists it just updates, so the URL is optional then.
Source
Thrown at src/home.rs:592
if allow_origin_reset {
ensure_origin_url(dest, expected)?;
} else if let Ok(actual) = git_capture(dest, &["remote", "get-url", "origin"]) {
if !urls_match(expected, actual.trim()) {
bail!(
"{} origin mismatch: expected {}, got {}",
label,
expected,
actual.trim()
);
}
}
}
update_repo(dest)?;
return Ok(());
}
let repo_url = repo_url.ok_or_else(|| anyhow::anyhow!("{} repo URL required", label))?;
clone_repo(repo_url, dest)?;
Ok(())
}
fn update_repo(dest: &Path) -> Result<()> {
run_command("git", &["fetch", "--prune", "origin"], Some(dest))?;
let branch = default_branch(dest)?;
run_command(
"git",
&["checkout", "-B", &branch, &format!("origin/{}", branch)],
Some(dest),
)?;
run_command(
"git",
&["reset", "--hard", &format!("origin/{}", branch)],
Some(dest),
)?;
println!("Updated {}", dest.display());View on GitHub (pinned to a747e741ae)
Solutions
- Provide the repo URL in config or the command argument for that label
- Pre-clone the repo into dest so only update_repo runs
- Run the setup/init command that populates default repo URLs
Example fix
// before f home sync mylabel // no URL known // after f home sync mylabel --repo https://github.com/org/mylabel.git
Defensive patterns
Strategy: validation
Validate before calling
let dest_exists = dest.join(".git").exists();
if !dest_exists && repo_url.is_none() {
anyhow::bail!("{} repo not cloned and no repo URL configured", label);
} Try / catch
match ensure_repo(label, dest, repo_url) {
Err(e) if e.to_string().ends_with("repo URL required") => {
eprintln!("add repo url for {} to config", label);
}
other => other?,
} Prevention
- Configure repo URLs for all managed labels in config
- Run initial clone with the URL on a fresh machine
- Don't delete managed destination directories without re-supplying URLs
When it happens
Trigger: Calling ensure_repo (via `run` or ensure_kar_repo) with a label/dest where the repo isn't cloned yet and repo_url is None.
Common situations: First run on a fresh machine without the URL configured, config missing the repo URL field for the labeled repo, deleted destination directory.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- repo URL is required
- could not determine repo name (use --repo)
- git config --global {} failed
- git config --global --unset {} failed
- missing repository URL
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/87751d53ece520cf.
Report an issue: GitHub.