{"record":{"id":"442c2b12492da929","repo":"jdx/mise","slug":"source-contains-machine-local-configuration-entr","errorCode":null,"errorMessage":"source contains machine-local configuration ({entry}); remove it from the repository before onboarding","messagePattern":"source contains machine-local configuration \\((.+?)\\); remove it from the repository before onboarding","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/remote_repository.rs","lineNumber":236,"sourceCode":"        .output()?;\n    if !output.status.success() {\n        bail!(\"invalid transferred repository bundle\");\n    }\n    if git(&checkout, &[\"rev-parse\", \"HEAD\"])? != revision {\n        bail!(\"transferred revision mismatch\");\n    }\n    let entries = git(&checkout, &[\"ls-tree\", \"-r\", \"-z\", \"--name-only\", revision])?;\n    for entry in entries.split('\\0').filter(|s| !s.is_empty()) {\n        let path = Path::new(entry);\n        if path\n            .components()\n            .any(|c| !matches!(c, std::path::Component::Normal(_)))\n            || entry.split('/').any(|p| p.eq_ignore_ascii_case(\".git\"))\n        {\n            bail!(\"unsafe source repository path\");\n        }\n        if entry.to_ascii_lowercase().ends_with(\".local.toml\") {\n            bail!(\n                \"source contains machine-local configuration ({entry}); remove it from the repository before onboarding\"\n            );\n        }\n    }\n    git(&checkout, &[\"remote\", \"set-url\", \"origin\", origin])?;\n    let branch = git(&checkout, &[\"symbolic-ref\", \"--short\", \"HEAD\"])?;\n    git(\n        &checkout,\n        &[\"-c\", \"core.hooksPath=/dev/null\", \"checkout\", &branch],\n    )?;\n    if destination.join(\".git\").exists() {\n        if git(destination, &[\"remote\", \"get-url\", \"origin\"])? != origin {\n            bail!(\"global configuration origin does not match\");\n        }\n        if !git(\n            destination,\n            &[\"status\", \"--porcelain\", \"--untracked-files=no\"],\n        )?","sourceCodeStart":218,"sourceCodeEnd":254,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/remote_repository.rs#L218-L254","documentation":"install_at refuses to onboard source trees containing *.local.toml files (case-insensitive), because those are machine-local configuration that must not be replicated into the global configuration directory. The error names the offending file.","triggerScenarios":"Repository tree (at the pinned revision) contains any entry ending in .local.toml, e.g. settings.local.toml or env.local.toml discovered via git ls-tree during install_at.","commonSituations":"Developers committing their local override files (conventionally *.local.toml) into the shared config repo, then onboarding from it on another machine.","solutions":["Delete the offending *.local.toml files from the repository and commit","Add *.local.toml to .gitignore to prevent recurrence","Push the fix, re-fetch, and install a new pinned revision"],"exampleFix":"# before\n$ git ls-files | grep '.local.toml'\nsettings.local.toml\n# after\n$ git rm settings.local.toml && echo '*.local.toml' >> .gitignore && git commit","handlingStrategy":"validation","validationCode":"fn repo_has_local_configs(entries: &[String]) -> Vec<String> {\n    entries.iter()\n        .filter(|e| e.to_ascii_lowercase().ends_with(\".local.toml\"))\n        .cloned()\n        .collect()\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add '*.local.toml' to .gitignore in config repositories","Never commit machine-local overrides to the shared repo","Run `git ls-tree -r --name-only <rev> | grep -i '\\.local\\.toml$'` before onboarding"],"tags":["git","config","policy"],"backgroundTag":"invalid-config-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}