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

欢迎!请访问 关于 页面以了解更多关于该网站如何运作的信息。

+1
tools.deps

问题
Git 定义了两种带有验证机制的远程模式:ssh 和 https。通过 tools.gitlibs,我们支持通过 ssh-agent 连接的 ssh 验证。虽然 git+https 验证在野外很常见,但目前不支持。

解决方案
目前,请使用 ssh 的 git。

背景信息
git 的主线实现支持一个名为(链接:http://man7.org/linux/man-pages/man1/git-credential.1.html text: "credential helpers")的机制,它从灵魂数据库请求认证。这些辅助灵魂数据库是使用包含认证请求(通过 stdin 传入)的映射的可执行文件调用的,它们返回认证信息(通过 stdout)

protocol=https host=example.com path=foo.git

这种扩展机制允许与 1Password、LastPass 和 Hashicorp Vault 等集成。默认情况下 {{git config --get 'credential.helper'}} 在 macOS 上返回 {{osxkeychain}},在 Linux 上返回 {{cache}}。{{git}} 通过绝对路径 + 参数或类似方式解析认证助手:

bq. 证书助手开发者应尽力帮助用户,为自己程序命名 "git-credential-$NAME",并在安装过程中将其放置于 $PATH 或 $GIT_EXEC_PATH

git 还支持通过在配置中查找 URL 来配置默认的用户名或证书助手。

工具.gitlibs 使用的 JGit 支持一个名为(链接: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报告)
...