Repository: semantic-release/github (js)

Issue:
New rename check breaks when repo url contains [secure]
Since the introduction of https://github.com/semantic-release/github/pull/886 in [v10.1.5](https://github.com/semantic-release/github/releases/tag/v10.1.5) the `repositoryUrl` vs `clone_url` check seems to have false positives.
We use the release as part of a monorepo, so it probably fetches the repo URL from the .git as the multiple package.json do not have the repo url in it in our case.

Details below, just adjusted host + repo. The `https://[secure]@` part is 1:1 from the log and probably the reason why it detects the false positive.

```
[11:28:36 AM] [semantic-release] › ✘  EMISMATCHGITHUBURL The git repository URL mismatches the GitHub URL.

The semantic-release repositoryUrl option must have the same repository name and owner as the GitHub repo.

Your configuration for the repositoryUrl option is https://[secure]@github.example.com/org/repo.git and the clone_url of your GitHub repo is https://github.example.com/org/repo.git.

By default the repositoryUrl option is retrieved from the repository property of your package.json or the git origin url (https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) of the repository cloned by your CI environment.

Note: If you have recently changed your GitHub repository name or owner, update the value in semantic-release repositoryUrl option and the repository property of your package.json respectively to match the new GitHub URL.

AggregateError: 

    SemanticReleaseError: The git repository URL mismatches the GitHub URL.
....
```

The plugin loading does not seem to allow to enforce an older version ?
Had to manually adjust the packages after install to workaround the issue for now.

Would be nice to ignore the user section before the host in some fix.
Thanks



Pull request:
fix: ignore case when checking for repo rename
fix #901

Patch:
diff --git a/lib/verify.js b/lib/verify.js
index b6ccba9..a0987c1 100644
--- a/lib/verify.js
+++ b/lib/verify.js
@@ -109,7 +109,10 @@ export default async function verify(pluginConfig, context, { Octokit }) {
       } = await octokit.request("GET /repos/{owner}/{repo}", { repo, owner });
       // Verify if Repository Name wasn't changed
       const parsedCloneUrl = parseGithubUrl(clone_url);
-      if (owner !== parsedCloneUrl.owner || repo !== parsedCloneUrl.repo) {
+      if (
+        `${owner}/${repo}`.toLowerCase() !==
+        `${parsedCloneUrl.owner}/${parsedCloneUrl.repo}`.toLowerCase()
+      ) {
         errors.push(
           getError("EMISMATCHGITHUBURL", { repositoryUrl, clone_url }),
         );


Test patch:
diff --git a/test/verify.test.js b/test/verify.test.js
index 37b3afb..495c7b1 100644
--- a/test/verify.test.js
+++ b/test/verify.test.js
@@ -1269,6 +1269,40 @@ test("Throw SemanticReleaseError if the repository doesn't exist", async (t) =>
   t.true(fetch.done());
 });
 
+test(`Don't throw an error if owner/repo only differs in case`, async (t) => {
+  const env = { GH_TOKEN: "github_token" };
+
+  const fetch = fetchMock.sandbox().getOnce(
+    `https://api.github.local/repos/org/foo`,
+    {
+      permissions: { push: true },
+      clone_url: `https://github.com/ORG/FOO.git`,
+    },
+    { repeat: 2 },
+  );
+
+  await t.notThrowsAsync(
+    verify(
+      {},
+      {
+        env,
+        options: {
+          repositoryUrl: `https://github.com/org/foo.git`,
+        },
+        logger: t.context.logger,
+      },
+      {
+        Octokit: TestOctokit.defaults((options) => ({
+          ...options,
+          request: { ...options.request, fetch },
+        })),
+      },
+    ),
+  );
+
+  t.true(fetch.done());
+});
+
 const urlFormats = [
   (owner, repo) => `https://github.com/${owner}/${repo}.git`,
   (owner, repo) => `git+https://github.com/${owner}/${repo}.git`,