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

欢迎!请查看关于页面以获得更多关于如何使用此功能的信息。

+1
tools.deps

问题
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中

2回答

0

评论由:gshayban发布

我附上了一种基于git HTTPS身份验证的方法,该方法利用git凭证辅助扩展点来抓取身份验证。该修复方案应用于tools.gitlibs,并在macOS上可执行。(您可以在需要身份验证的https代码库上调用procure。)

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