{"record":{"id":"db86cc9fd796affb","repo":"egametang/ET","slug":"clone-hybridclr-fail-url-hybridclrrepourl","errorCode":null,"errorMessage":"clone hybridclr fail. url: {hybridclrRepoURL}","messagePattern":"clone hybridclr fail\\. url: (.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"Packages/cn.etetet.hybridclr/Scripts/Editor/Share/Installer/InstallerController.cs","lineNumber":234,"sourceCode":"        {\n            BashUtil.RemoveDir(repoDir);\n            BashUtil.RunCommand(workDir, \"git\", new string[] {\"clone\", \"-b\", branch, \"--depth\", \"1\", repoUrl, repoDir});\n        }\n\n        private string PrepareLibil2cppWithHybridclrFromGitRepo()\n        {\n            string workDir = SettingsUtil.HybridCLRDataDir;\n            Directory.CreateDirectory(workDir);\n            //BashUtil.RecreateDir(workDir);\n\n            // clone hybridclr\n            string hybridclrRepoURL = HybridCLRSettings.Instance.hybridclrRepoURL;\n            string hybridclrRepoDir = $\"{workDir}/{hybridclr_repo_path}\";\n            CloneBranch(workDir, hybridclrRepoURL, _curDefaultVersion.hybridclr.branch, hybridclrRepoDir);\n\n            if (!Directory.Exists(hybridclrRepoDir))\n            {\n                throw new Exception($\"clone hybridclr fail. url: {hybridclrRepoURL}\");\n            }\n\n            // clone il2cpp_plus\n            string il2cppPlusRepoURL = HybridCLRSettings.Instance.il2cppPlusRepoURL;\n            string il2cppPlusRepoDir = $\"{workDir}/{il2cpp_plus_repo_path}\";\n            CloneBranch(workDir, il2cppPlusRepoURL, _curDefaultVersion.il2cpp_plus.branch, il2cppPlusRepoDir);\n\n            if (!Directory.Exists(il2cppPlusRepoDir))\n            {\n                throw new Exception($\"clone il2cpp_plus fail. url: {il2cppPlusRepoDir}\");\n            }\n\n            Directory.Move($\"{hybridclrRepoDir}/hybridclr\", $\"{il2cppPlusRepoDir}/libil2cpp/hybridclr\");\n            return $\"{il2cppPlusRepoDir}/libil2cpp\";\n        }\n\n        public void InstallFromLocal(string libil2cppWithHybridclrSourceDir)\n        {","sourceCodeStart":216,"sourceCodeEnd":252,"githubUrl":"https://github.com/egametang/ET/blob/5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f/Packages/cn.etetet.hybridclr/Scripts/Editor/Share/Installer/InstallerController.cs#L216-L252","documentation":"Thrown by InstallerController.PrepareLibil2cppWithHybridclrFromGitRepo after CloneBranch returns but the hybridclr repository target directory does not exist. The installer clones the hybridclr runtime source from a configurable Git URL and expects the checkout to materialize on disk.","triggerScenarios":"CloneBranch(workDir, hybridclrRepoURL, branch, hybridclrRepoDir) is called but the resulting directory is absent. Common when git clone fails: network error, unreachable host, wrong URL, authentication failure, or git not on PATH.","commonSituations":"Corporate firewall/proxy blocking GitHub; HybridCLRSettings.hybridclrRepoURL was customized to a private mirror without credentials; git is not installed or not on PATH in a headless/CI environment; the target disk is full or read-only.","solutions":["Verify git is installed and on PATH (run git --version from the same environment).","Open HybridCLR Settings and confirm hybridclrRepoURL points to a reachable repository (default is the public GitHub mirror).","If behind a proxy, configure git http.proxy or set the HTTPS_PROXY environment variable before running the installer.","For private mirrors, ensure SSH keys or tokens are configured; alternatively use InstallFromLocal with a pre-cloned source directory."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Pre-flight: confirm the repo URL is set\nif (string.IsNullOrEmpty(HybridCLRSettings.Instance.hybridclrRepoURL))\n    Debug.LogError(\"hybridclrRepoURL is empty in HybridCLR settings.\");","typeGuard":null,"tryCatchPattern":"try\n{\n    installer.CloneBranch(workDir, repoUrl, branch, destDir);\n}\ncatch\n{\n    // Retry with explicit proxy env or fall back to InstallFromLocal\n}","preventionTips":["Ensure git is installed and on PATH in all environments including CI containers.","If behind a proxy, configure git http.proxy before running the installer.","For air-gapped or unreliable networks, use InstallFromLocal with a pre-cloned source directory."],"tags":["hybridclr","installer","git","network"],"backgroundTag":null,"analyzedSha":"5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f","analyzedAt":"2026-08-13T21:10:40.377Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}