{"record":{"id":"d0186e544e9af900","repo":"phacility/phabricator","slug":"repository-s-does-not-have-a-correctly-configur","errorCode":null,"errorMessage":"Repository \"%s\" does not have a correctly configured remote URI. The remote URI for a Subversion repository MUST point at the repository root. The root for this repository is \"%s\", but the configured URI is \"%s\". To resolve this error, set the remote URI to point at the repository root. If you want to import only part of a Subversion repository, use the \"Import Only\" option.","messagePattern":"Repository \"(.+?)\" does not have a correctly configured remote URI\\. The remote URI for a Subversion repository MUST point at the repository root\\. The root for this repository is \"(.+?)\", but the configured URI is \"(.+?)\"\\. To resolve this error, set the remote URI to point at the repository root\\. If you want to import only part of a Subversion repository, use the \"Import Only\" option\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php","lineNumber":329,"sourceCode":"\n    $xml = phutil_utf8ize($xml);\n    $xml = new SimpleXMLElement($xml);\n\n    $remote_root = (string)($xml->entry[0]->repository[0]->root[0]);\n    $expect_root = $repository->getSubversionPathURI();\n\n    $normal_type_svn = ArcanistRepositoryURINormalizer::TYPE_SVN;\n\n    $remote_normal = id(new ArcanistRepositoryURINormalizer(\n      $normal_type_svn,\n      $remote_root))->getNormalizedPath();\n\n    $expect_normal = id(new ArcanistRepositoryURINormalizer(\n      $normal_type_svn,\n      $expect_root))->getNormalizedPath();\n\n    if ($remote_normal != $expect_normal) {\n      throw new Exception(\n        pht(\n          'Repository \"%s\" does not have a correctly configured remote URI. '.\n          'The remote URI for a Subversion repository MUST point at the '.\n          'repository root. The root for this repository is \"%s\", but the '.\n          'configured URI is \"%s\". To resolve this error, set the remote URI '.\n          'to point at the repository root. If you want to import only part '.\n          'of a Subversion repository, use the \"Import Only\" option.',\n          $repository->getDisplayName(),\n          $remote_root,\n          $expect_root));\n    }\n  }\n\n\n/* -(  Discovering Mercurial Repositories  )--------------------------------- */\n\n\n  /**","sourceCodeStart":311,"sourceCodeEnd":347,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/repository/engine/PhabricatorRepositoryDiscoveryEngine.php#L311-L347","documentation":"Thrown during Subversion discovery when the configured remote URI does not normalize to the repository root that SVN itself reports. Phabricator requires an SVN remote URI to point exactly at the repository root because it computes paths and history relative to that root; the code normalizes both the remote root and the expected root with ArcanistRepositoryURINormalizer and compares them. The Import Only (subpath) mechanism exists for importing only part of an SVN repository.","triggerScenarios":"Configuring an SVN repository whose remote URI points at a subdirectory such as svn://host/repo/trunk instead of svn://host/repo; normalization differences between the configured URI and the root reported by 'svn info'; editing the URI after initial import to a non-root path.","commonSituations":"Admins importing only trunk by pointing the remote URI at it instead of using Import Only; typos or missing path segments in the remote URI; migrating from workflows where subdirectory URIs are common.","solutions":["Set the repository remote URI to the SVN repository root (the Repository Root reported by 'svn info')","If you only want part of the repository, configure the Import Only path on the repository edit page instead of pointing the URI at a subdirectory","Verify with 'svn info <uri>' that Repository Root matches the configured URI exactly","Re-run discovery after fixing the URI"],"exampleFix":"# before\n# remote URI: svn://svn.example.com/calculator/trunk\n\n# after\n# remote URI: svn://svn.example.com/calculator\n# plus, in repository config, 'Import Only' (subpath): trunk","handlingStrategy":"validation","validationCode":"// SVN: verify the URI points at the repository root before discovery:\nlist($out) = execx('svn info %s', $remote_uri);\n// parse 'Repository Root:' from $out and require:\n//   normalized($remote_uri) == normalized($repository_root)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always configure SVN remote URIs at the repository root reported by 'svn info'","Use the Import Only subpath option to scope imports, never a subdirectory URI","Document the canonical root URI per SVN repository in provisioning templates"],"tags":["phabricator","svn","remote-uri","repository","configuration"],"backgroundTag":"invalid-remote-uri","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}