问题
Git定义了两种带有认证的远程模式:ssh和https。通过tools.gitlibs,我们通过SSH代理连接支持ssh认证。目前不支持git+https认证,尽管它在野外很常见。
解决方案
暂时使用SSH上的git。
背景信息
主线git实现支持一个名为(链接:http://man7.org/linux/man-pages/man1/git-credential.1.html 文本:"credential helpers")的机制,它从预言者那里要求认证。这些辅助预言者是使用包含认证要求的映射(通过stdin传入)调用的可执行文件,并返回认证信息(通过stdout)
协议=https 主机=example.com 路径=foo.git
此扩展机制允许与1Password、LastPass和Hashicorp Vault集成。默认情况下{{git config --get 'credential.helper'}}在macOS上返回{{osxkeychain}},在Linux上返回{{cache}}。{{git}}通过查找其配置中的URL解析凭证辅助工具
bq. 凭证辅助工具的作者应该努力帮助用户为他们命名程序 "git-credential-$NAME",并在安装期间将其放入$PATH或$GIT_EXEC_PATH中
git还支持通过在其配置中查找URL来配置默认用户名或凭证辅助工具。
JGit(由tools.gitlibs使用)支持(链接:http://download.eclipse.org/jgit/site/4.10.0.201712302008-r/apidocs/org/eclipse/jgit/transport/CredentialsProvider.html 文本:"CredentialProvider")及其几个具体实现(AwtCredentialsProvider、ChainingCredentialsProvider、ConsoleCredentialsProvider、NetRCCredentialsProvider、UsernamePasswordCredentialsProvider),但没有哪一个与主线git的工作方式相同。
GitHub当前更倾向于https而不是ssh进行git访问(尽管这从历史上看已经翻篇了)。
不可行方案
- 将凭据放在deps.edn中