git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。
在 CMake 中,使用 ExternalProject_Add
对于指定的 GIT_REPOSITORY
可以使用 git 命令理解的任何 URL。
必须提供使用 HTTPS 用户凭据才能“克隆”私有(private)存储库。对于 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
)
在私有(private)存储库上,给出以下错误:fatal: could not read Username for 'https://github.com': No such device or address
题如何让 CMake 请求
GIT_REPOSITORY
的密码当使用 HTTPS 连接到 ExternalProject_Add
上的私有(private)存储库时?
最佳答案
虽然 CMake 不提供用于提供用户凭据的显式 Git 选项(如 HTTP_USERNAME
和 HTTP_PASSWORD
),但您可以操作 Git URL,以便提示您输入登录密码,如 here 所述。 .只需指定您的 username
与 @
在网址中:
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 帐户。
关于cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56935202/