{"record":{"id":"7f67c7aef240311c","repo":"gitbutlerapp/gitbutler","slug":"gitbutler-project-data-does-not-exist-at","errorCode":null,"errorMessage":"GitButler project data does not exist at '{}'","messagePattern":"GitButler project data does not exist at '(.+?)'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/but-debug/src/command/dump/repo_installer.rs","lineNumber":47,"sourceCode":"    let repo = setup::repo_from_args(args).with_context(|| {\n        format!(\n            \"Could not discover Git repository at '{}'\",\n            current_dir.display()\n        )\n    })?;\n    let repo = gix::open_opts(repo.git_dir().canonicalize()?, repo.open_options().clone())?;\n    let workdir = repo\n        .workdir()\n        .context(\"Repository installers require a non-bare repository\")?;\n    ensure!(\n        repo.git_dir() == repo.common_dir(),\n        \"Repository installers require the main worktree\"\n    );\n\n    let project_data_dir = repo\n        .gitbutler_storage_path()\n        .context(\"Could not locate GitButler project data\")?;\n    ensure!(\n        project_data_dir.is_dir(),\n        \"GitButler project data does not exist at '{}'\",\n        project_data_dir.display()\n    );\n\n    let base = archive_base_name(&repo)?;\n    let archive_root = format!(\"{base}-repo-installer\");\n    let output_path = match &installer_args.archive.output {\n        Some(path) => current_dir.join(path),\n        None => default_output_path(&repo, \"repo-installer\")?,\n    };\n    let output_path = OutputPath::new(output_path, current_dir);\n    let archive_lock = acquire_archive_lock(&output_path.path, Some(workdir.to_owned()))?;\n    let output_path = output_path.with_lock_path(archive_lock.lock_path().to_owned());\n\n    let _repo_guard =\n        but_core::sync::exclusive_repo_access(repo.git_dir(), Some(&project_data_dir));\n    let clone_remote = clone_remote(&repo, workdir)?;","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/gitbutlerapp/gitbutler/blob/58e5313667b857ef39a730e380af31816a7b1768/crates/but-debug/src/command/dump/repo_installer.rs#L29-L65","documentation":"repo-installer dump locates the GitButler project data directory via repo.gitbutler_storage_path() and requires it to exist as a directory. If the path doesn't exist (or isn't a directory) the dump cannot proceed, so it fails with this ensure! message including the path.","triggerScenarios":"Running `but-debug dump repo-installer` in a repository that has never been opened/managed by GitButler, so no .git/gitbutler (project storage) directory exists.","commonSituations":"Fresh clones dumped before ever opening the project in GitButler; storage directory deleted manually; running against a repo from a different machine's layout.","solutions":["Open the repository in GitButler first so project data is created, then re-run the dump.","Verify the printed path exists: check `.git/gitbutler/` inside the repo.","Restore the deleted storage directory from backup or re-add the project to regenerate it."],"exampleFix":"// before\n$ git clone x && but-debug dump repo-installer   # no GitButler data yet\n// after\n$ gitbutler add-project ./x                      # creates project data\n$ but-debug dump repo-installer","handlingStrategy":"validation","validationCode":"if [ ! -d .git/gitbutler ]; then echo 'No GitButler project data; open the project in GitButler first'; exit 1; fi","typeGuard":"fn has_project_data(repo: &gix::Repository) -> bool {\n    repo.gitbutler_storage_path().map(|p| p.is_dir()).unwrap_or(false)\n}","tryCatchPattern":null,"preventionTips":["Open the repo in GitButler at least once before dumping.","Check the printed storage path exists before running the command.","Don't delete .git/gitbutler manually."],"tags":["git","debug","missing-data"],"backgroundTag":"file-not-found","analyzedSha":"58e5313667b857ef39a730e380af31816a7b1768","analyzedAt":"2026-09-18T06:50:32.052Z","contentChangedAt":"2026-09-18T06:50:32.052Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}