【问题标题】:How to ensure that a SSH and HTTPs-url of a repo refer to same git repository如何确保 repo 的 SSH 和 HTTPS-url 引用相同的 git 存储库
【发布时间】:2020-08-29 22:39:26
【问题描述】:

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

【问题讨论】:

    标签: http github ssh


    【解决方案1】:

    不要让用户指定新的 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///_git/
    • SSH:git@ssh.dev.azure.com:v3///

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

    【讨论】:

    • 感谢您的回复。这适用于 github.com 中的存储库。但在 azure 的情况下,url 如下所示:kt@dev.azure.com/kt/mast_gs_lm/_git/mast_gs_lm 和 ssh 看起来像 git@ssh.dev.azure.com:v3/kt/mast_gs_lm/mast_gs_lm,同样它对于 bitbucket 也不同。鉴于我们支持多个 Git 存储库管理系统,我们如何确保映射到正确的存储库?
    • 没有支持任何 Git 提供者的通用映射(因为没有标准说明他们必须如何设计 URL),但是对于给定的提供者,使用不同方案转换 URL 应该很简单彼此。
    • 是的,所以给定一个 http/ssh url,是否可以从远程获取另一个 url?这将使我们免于为独立提供商进行转换。
    • 这将再次取决于提供者。 Git 本身并没有说明任何给定存储库可能存在或不存在哪些 URL。
    猜你喜欢
    • 2020-08-30
    • 2015-12-05
    • 2019-09-30
    • 2020-08-04
    • 1970-01-01
    • 2014-04-22
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多