configuration - 使用 Apache MINA 实现 JGIT TransportConfigCallback
问题描述
JGit 过去依赖 JSch 作为其传输提供者,但由于 JSch 不接受某些密钥(包括一些 OpenSSH 密钥)而发生了变化。
如果您在 JGit 中使用密码短语加密的密钥,那么过去推荐的 JSch 方法是覆盖配置回调,如本博客文章所示。
另一种方法是设置一个共享会话工厂,这也是 Apache MINA 团队建议的,它带有一个指向按需创建会话的成本的指针。
但是,我对此的问题是它为整个系统范围设置了一个特定的提供程序。因此,我想实施TransportConfigCallback
. 最终,这需要适应SshSessionFactory
MINA 的会话初始化代码并生成一个RemoteSession
.
有没有人这样做或看过任何样板代码?
解决方案
经过一番研究后的自我回答:JGit中的MINA接口被故意设置为关闭。驱动程序只接受常规的 Git 配置目录。这是配置系统的关键:
- 为每个用户提供不同的 git 配置目录。
- 为所有特殊设置提供常规的 git 配置(git config)文件
- JGit 具有编写 Git 配置的类,因此您无需编写任何解析和序列化代码。
我将使用指向所涉及的类和源代码位置的相关链接来更新此答案。
从5.5 版开始,可以为此用例配置工厂。有关如何使用数据库提供连接信息的详细信息,请参阅NoFilesSshTest.java 。
推荐阅读
- jquery - 控制器将微软图表作为图像返回给 AJAX 调用
- c# - QuickFixN 不发送交易时段的登录信息
- c# - 在 C#.Net 中将文件上传到 zoho 联系人
- batch-file - 只允许数组窗口批处理文件中的唯一条目
- sqlite - 如何使用 FTS3 优化加入(在文本上)
- kubernetes - kube-state-metrics - 无法列出 *v1.Pod: text/html 的序列化程序;charset=utf-8 不存在
- javascript - 如何仅为 IE 9 以上的浏览器插入脚本
- c# - 如何为多项目 Nuget 包创建符号?
- javascript - JSPDF:未捕获的类型错误:无法读取未定义的属性“长度”
- ruby - Elasticsearch 按关系排序