{"record":{"id":"97753eb3d083b34e","repo":"abpframework/abp","slug":"remote-origin-is-null-for-given-repository","errorCode":null,"errorMessage":"Remote origin is null for given repository !","messagePattern":"Remote origin is null for given repository !","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs","lineNumber":99,"sourceCode":"                    var repositoryName = GetRepositoryNameFromRepositoryInfo(repo);\n\n                    return new GitRepository(repositoryName, repo.Head.FriendlyName, directoryInfo.FullName);\n                }\n            }\n\n            directoryInfo = directoryInfo.Parent;\n        } while (directoryInfo?.Parent != null);\n\n        throw new Exception(\"There is no solution file (*.sln or *.slnx) and \" + _buildConfigName +\n                            \" in the working directory and working directory is not a GIT repository !\");\n    }\n\n    private string GetRepositoryNameFromRepositoryInfo(Repository repository)\n    {\n        var remote = repository.Network.Remotes.FirstOrDefault(r => r.Name == \"origin\");\n        if (remote == null)\n        {\n            throw new Exception(\"Remote origin is null for given repository !\");\n        }\n\n        var remoteUrl = remote.Url;\n\n        remoteUrl = Regex.Replace(remoteUrl, @\"\\.git$\", \"\");\n\n        remoteUrl = Regex.Replace(remoteUrl, \"^git@\", \"https://\");\n        remoteUrl = Regex.Replace(remoteUrl, \"^https:git@\", \"https://\");\n        remoteUrl = Regex.Replace(remoteUrl, \".com:\", \".com/\");\n\n        var remoteUri = new Uri(remoteUrl);\n        var pathSegments = remoteUri.AbsolutePath.Split(\"/\", StringSplitOptions.RemoveEmptyEntries);\n\n        if (pathSegments != null && pathSegments.Length >= 2)\n        {\n            var repo = pathSegments[1];\n            return repo;\n        }","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs#L81-L117","documentation":"Thrown by GetRepositoryNameFromRepositoryInfo when the opened LibGit2Sharp Repository has no remote named 'origin'. The reader derives the repository name from the origin remote URL; without an origin remote there is nothing to parse, so it aborts.","triggerScenarios":"A .git folder was found and opened, but repository.Network.Remotes contains no entry whose Name == 'origin'. Happens with local-only repos that never had a remote added, or repos whose remote was renamed or removed.","commonSituations":"git init'd a project locally without ever adding a remote; the remote was named something other than 'origin' (e.g., 'upstream' or a custom name); a CI clone configured a differently-named remote; the repo was created by a tool that does not set origin.","solutions":["Add an origin remote: git remote add origin <your-remote-url>.","If the remote exists under a different name, rename it: git remote rename <current> origin.","Verify with 'git remote -v' that origin is present before running the ABP build.","Alternatively, supply an abp-build-config.json so the reader does not need to infer the repo from git."],"exampleFix":"# before: no origin remote\nabp build   # throws: Remote origin is null\ngit remote -v   # (empty or no origin)\n# after: add origin\ngit remote add origin https://github.com/org/myrepo.git\nabp build","handlingStrategy":"validation","validationCode":"// Pre-check: the repository must have an 'origin' remote.\nusing var repo = new Repository(repoPath);\nif (repo.Network.Remotes.FirstOrDefault(r => r.Name == \"origin\") == null)\n{\n    throw new InvalidOperationException(\"No 'origin' remote configured. Run: git remote add origin <url>\");\n}","typeGuard":"public static bool HasOriginRemote(Repository repo) =>\n    repo.Network.Remotes.Any(r => r.Name == \"origin\");","tryCatchPattern":"try\n{\n    var cfg = reader.Read(directoryPath);\n}\ncatch (Exception ex) when (ex.Message.Contains(\"Remote origin is null\", StringComparison.Ordinal))\n{\n    logger.LogError(ex, \"Missing 'origin' remote; add one before building.\");\n    throw;\n}","preventionTips":["Always add an 'origin' remote when initializing repos that will be built with the ABP CLI.","Verify 'git remote -v' shows origin before running 'abp build'.","If renaming remotes, keep 'origin' as the canonical name.","Provide an abp-build-config.json so git inference is not required."],"tags":["cli","build","git","configuration"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}