首页 > 解决方案 > 如何确保 repo 的 SSH 和 HTTPS-url 引用相同的 git 存储库

问题描述

我们的平台支持创建应用程序并将它们连接到 Git 存储库以管理它们。我们确实支持 GitHub、Azure、Bitbucket 等。假设我们有一个使用 HTTPS 链接到 GitHub 存储库的应用程序。我们希望为用户提供随时切换到 SSH 身份验证的功能,这需要更改 URL。这可能意味着用户可能会错误地输入不同存储库的 URL 并链接到它。我们如何防止这种情况?有没有办法找出先前 url 指向的存储库和更改后的 url 是相同的,而与使用的 Git 存储库管理系统无关?

标签: httpgithubssh

解决方案


不要让用户指定新的 URL:修改现有的 URL。

考虑一个虚构的 Github URL:

https://github.com/jdoe/project.git

要将其替换为 SSH URL,只需将其替换https://github.com/git@github.com:.

类似但不同的是,需要为每个受支持的 Git 提供程序编码映射。例如,在 Azure 上看起来只有用户名U和项目名P很重要;它们可以从一种类型的 URL 中提取并用于构造另一种类型的 URL。

  • HTTP:http://@dev.azure.com/<USER>/<PROJECT>/_git/<PROJECT>
  • SSH:git@ssh.dev.azure.com:v3/<USER>/<PROJECT>/<PROJECT>

无论提供者如何,用户只需提供一次URL ;您将在幕后处理从一种方案到另一种方案的转换。


推荐阅读