cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码
问题描述
git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。
在 CMake 中,可以使用 git 命令理解的任何 URLExternalProject_Add
来指定指定的URL。GIT_REPOSITORY
必须提供使用 HTTPS 用户凭据才能“克隆”私有存储库。因为ExternalProject_Add
,这种机制在使用时HTTP_USERNAME
以形式存在。HTTP_PASSWORD
DOWNLOAD_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
?
解决方案
虽然 CMake 没有提供明确的 Git 选项来提供用户凭据(如HTTP_USERNAME
和HTTP_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 帐户。
推荐阅读
- azure-devops - Azure DevOps 中的名称和显示名称有什么区别
- dictionary - 制作百分比条形图
- java - 如何在 Selenium Java Webdriver 中获取要在运行时验证的文本的类名
- oracle - 避免重复 oracle aapex
- java - Liferay 门户:使用 JSF 和 EJB-CDI 的 OSGI 模块化不使用 @Resource 注入/检索
- java - 使用 onPreviewFrame 运行 ML 模型
- javascript - 使用 Angular6 Service 构造函数初始化私有属性
- java - 在 Springboot 中修剪 @RequestParam
- python - 如何将指数平滑模型预测值获取到 POWER BI/POWER Query 数据集?
- python - 使用 Python 子进程调用带有空格分隔列表的 Python 命令