问题
Git 定义了两种带认证的远程模式:ssh 和 https。通过 tools.gitlibs,我们支持通过连接到 ssh-agent 使用 ssh 认证。目前不支持 git+https 认证,尽管它在野外很常见。
解决方案
暂时使用 git over ssh。
背景信息
主线 git 实现 支持 一套名为 (link: http://man7.org/linux/man-pages/man1/git-credential.1.html text: "credential helpers") 的机制,通过它从.oracule要求认证。这些辅助或acule是运行在认证需求(通过 stdin 传入)映射上的可执行文件,并通过 stdout 返回认证信息
protocol=https host=example.com path=foo.git
此扩展机制允许与 1Password、LastPass 和 Hashicorp Vault 进行整合。默认情况下 {{git config --get 'credential.helper'}} 返回 {{osxkeychain}} 在 macOS 上和 {{cache}} 在 Linux 上。{{git}} 通过查找配置中的 URL 来解析凭证助手
bq.凭证助手的作者应尽力帮助用户,在安装过程中将它们的程序命名为 "git-credential-$NAME",并将其放在 $PATH 或 $GIT_EXEC_PATH 中
git 还支持通过在配置中查找 URL 来配置默认的用户名或凭证助手
由 tools.gitlibs 使用的 JGit 支持凭证提供者的想法(link: http://download.eclipse.org/jgit/site/4.10.0.201712302008-r/apidocs/org/eclipse/jgit/transport/CredentialsProvider.html text: CredentialProvider),有多个具体实现(AwtCredentialsProvider、ChainingCredentialsProvider、ConsoleCredentialsProvider、NetRCCredentialsProvider、UsernamePasswordCredentialsProvider),但没有一个与主线 git 以相同的方式工作。
Github 目前更倾向于 https 而非 ssh 以访问 git(尽管这从历史上来说已经反转了)。
无解的情况
- 在 deps.edn 中放置凭据