sxyazi/yazi · error
Getting revision failed: {}
Error message
Getting revision failed: {} What it means
The `git rev-parse --short HEAD` subprocess run inside the package directory exited with a non-zero status. Spawning succeeded (a spawn failure produces the `Failed to get current revision` context error instead), so the fault is git itself rejecting the query — typically because the path is not a git repository or HEAD is unreadable.
Source
Thrown at yazi-cli/src/package/git.rs:40
Self::materialize(path).await
}
pub(super) async fn pull(path: &Path) -> Result<()> {
Self::fetch(path).await?;
Self::checkout(path, "origin/HEAD").await?;
Ok(())
}
pub(super) async fn revision(path: &Path) -> Result<String> {
let output = Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.current_dir(path)
.output()
.await
.context("Failed to get current revision")?;
if !output.status.success() {
bail!("Getting revision failed: {}", output.status);
}
Ok(strip_trailing_newline(
String::from_utf8(output.stdout).context("Failed to parse revision")?,
))
}
async fn materialize(path: &Path) -> Result<()> {
let path = fs::canonicalize(path).await.context("Failed to resolve Git repository")?;
let output = Command::new("git")
.args(["ls-files", "--stage", "-z"])
.current_dir(&path)
.output()
.await
.context("Failed to list Git files")?;
if !output.status.success() {
bail!("Listing Git files failed: {}", output.status);
}View on GitHub (pinned to 5f901b886b)
Solutions
- Confirm the path is an actual git repository with a valid HEAD.
- Run `git rev-parse --short HEAD` in that directory manually to see git's own error.
- Re-clone the package if the checkout is corrupted.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at yazi-cli/src/package/git.rs:40 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sxyazi/yazi@5f901b886b (2026-09-02).
Data as JSON: /api/errors/691133547cbebc0c.
Report an issue: GitHub.