首页 > 解决方案 > 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码

问题描述

git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。

在 CMake 中,可以使用 git 命令理解的任何 URLExternalProject_Add来指定指定的URL。GIT_REPOSITORY

必须提供使用 HTTPS 用户凭据才能“克隆”私有存储库。因为ExternalProject_Add,这种机制在使用时HTTP_USERNAME以形式存在。HTTP_PASSWORDDOWNLOAD_COMMAND

因为GIT_REPOSITORY似乎没有这样的方法。使用时:

include( ExternalProject )

ExternalProject_Add(test
    GIT_REPOSITORY git@github.com:myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
)

在私有存储库上给出以下错误:

fatal: could not read Username for 'https://github.com': No such device or address

问题

GIT_REPOSITORY使用 HTTPS 连接到私有存储库时,如何让 CMake 请求密码ExternalProject_Add

标签: cmakeexternal-project

解决方案


虽然 CMake 没有提供明确的 Git 选项来提供用户凭据(如HTTP_USERNAMEHTTP_PASSWORD),但您可以操纵 Git URL,以便提示您输入登录密码,如此所述。只需在 URL 中username使用 a指定您的:@

ExternalProject_Add(test
    GIT_REPOSITORY https://username@github.com/myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
    USES_TERMINAL_DOWNLOAD ON 
)

请注意,您可能还需要启用USES_TERMINAL_DOWNLOAD允许终端输入以输入您的凭据的选项。您也可以直接在 URL 本身中提供密码,但最佳做法不建议这样做:

ExternalProject_Add(test
    GIT_REPOSITORY https://username:password@github.com/myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
    USES_TERMINAL_DOWNLOAD ON 
)

作为奖励,这也适用于 Bitbucket 帐户。


推荐阅读