请在 2024 Clojure 状态调查! 中分享您的想法。

欢迎!请访问 关于 页面以获取更多关于如何工作的信息。

+1 投票
tools.deps

问题
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 中放置凭据

2 个答案

0 投票

评论由:gshayban 提出

我附加了一种使用git HTTPS身份验证的方法,该方法利用git凭证助手扩展点来获取认证。补丁针对tools.gitlibs,可在macOS上运行。(您可以对需要认证的https仓库调用procure。)

0 投票
参考:https://clojure.atlassian.net/browse/TDEPS-33(由gshayban报告)
...