【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Sharpen 助 NGit 实现托管 Git 命令

  • 2010-11-03
  • 本文字数:1137 字

    阅读完需:约 4 分钟

Git 是目前最为流行的分布式版本控制工具,受到全世界开发人员的广泛欢迎。 Lluis Sanchez Gual 在开发 MonoDevelop 的 Git 集成功能时,使用 Sharpen 将 Java 实现的 JGit 转化为 C#实现的 NGit。 Sharpen 是一款由 Versant 公司开发的 Eclipse 插件,用于将他们的对象数据库产品 db4o 由 Java 移植为 C#。

Lluis在博客中写到,在实现MonoDevelop 的Git 功能时,他本打算直接使用Git 命令,并解析输出,它可以满足一些基本需求,但很不可靠,只能作为短期解决方案。后来他将注意力转移到 GitSharp 上。GitSharp 是款完全由托管代码实现的.NET 类库,实现了绝大部分的 Git 命令。GitSharp 源自 JGit 的手动移植,因此难以接受 JGit 的升级与补丁。同时,它还依赖着一些用于实现 ssh 协议的加密类库,由于输出策略原因,它们不能包含在 MonoDevelop 中。

因此 Lluis 尝试了另一种方式,使用 Sharpen 将 JGit 的 Java 代码转化为 C#,经过了几个星期的努力,它已经可以自动地将所有 JGit 代码生成 C#代码了,只需少量的手写补丁,十分易于维护。其中大部分的工作是对 Sharpen 的改进,并实现一些 Java 核心类库中无法直接对应 Mono 类库的部分。Lluis 表示,目前很容易在 JGit 和 NGit 间保持同步,事实上他已经将这一过程使用 makefile 自动化了。在单元测试方面,NGit 已经通过了 90% 的单元测试,其他失败的 10% 主要是由于 JUnit 和 NUnit 在行为上有所不同,Lluis 将继续尝试解决这些问题。在这个过程中还产生了 Nsch 项目,这是 Jsch 的对应产物,用于 ssh 通信,且只依赖于 Mono.Security 类库。

因此,NGit 已经是一个完整的由托管代码实现的客户端了,它不对 Mono 外的类库有任何依赖。包括单元测试在内,转换后大约有 56000 行 C#代码,目前已经可以在Github 上访问了。Lluis 目前的工作,是继续实现MonoDevelop 中对Git 的支持插件,他表示已经完成了大部分实现,还需一些测试,并解决一些性能问题即可提交至master 分支中。他同时也提交了一些JGit 的补丁,已被部分接受

Sharpen 项目原本是由 Versant 公司开发,用于将他们的开源对象数据库产品 db4o 从 Java 移植到 C#。Sharpen 支持自定义转化规则,并可以保留.NET 的习惯,例如将特定方法转化为属性或是事件。在 Sharpen 的帮助下,他们已经同时提供 db4o 在两种平台上的原生实现。

除了 Sharpen 之外, IKVM.NET 也是一个在.NET 环境下运行 Java 程序的项目。与 Sharpen 的源码转化不同,IKVM.NET 的手段主要是将 Java 字节码转化为.NET IL,并提供了一套 JDK 核心类库的.NET 实现。IKVM.NET 支持微软.NET 平台及 Mono,并可以成功运行包括 Eclipse、Jython、JBoss 在内的大型 Java 应用程序。国内社区的老赵也分享了他基于IKVM.NET 使用 Lucene 2.9.0 Google Closure Compiler 的经验。

2010-11-03 08:051634
用户头像

发布了 157 篇内容, 共 52.3 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

春天到了,连AI都开始瘦身……

白洞计划

Flutter 多选底部弹层实现详解

岛上码农

flutter ios 移动端开发 3月月更 安卓开发

Ubuntu 笔记本关闭合上盖子自动休眠

信号量

Linux ubuntu SSH 笔记本 盖子

在线JSON转XML工具

入门小站

工具

在线Js,JavaScript压缩格式化工具

入门小站

工具

Jira API的六种传参方式

FunTester

性能测试 FunTester

Hoo研究院|2022年第一季度发生在区块链行业的投融大事件

区块链前沿News

虎符交易所 虎符研究院

火狐浏览器如何设置代理?火狐浏览器代理服务器设置教程

喀拉峻

网络安全

大画 Spark :: 网络(6)-Spark网络中的“四次握手”Executor注册到Driver的过程(硬核)

dclar

大数据 hadoop spark 源码 源代码

Nydus 镜像加速插件迁入 Containerd 旗下

SOFAStack

“互联网+”

架构设计作业一

yang

2022钉钉发布会|云钉低代码新模式、新能力、新机遇

一只大光圈

低代码 数字化 钉钉宜搭 宜搭

项目管理中的三约束四职责五过程九领域

踏雪痕

项目管理 3月程序媛福利 3月月更 PMBOK

iuap 助力长久汽车打造“业财一体数字智能化平台”

用友BIP

用友 用友iuap

WebAssembly技术_在Web端运行C与C++程序(ubuntu18.04)

DS小龙哥

webassembly 3月月更

Kubernetes 中的对象是如何删除的:Finalizers 字段介绍

Se7en

STEPN游戏系统定制开发需

Geek_232be3

Nacos+OpenFegin正确调用服务的姿势!

王磊

springcloudAlibaba

祖传代码如何优化性能?

捉虫大师

性能优化

1-2月热点:度目发布煤矿电子封条解决方案,AI助力生产安全,推进煤矿智能化建设

百度大脑

自己动手写Docker系列 -- 5.2实现查看运行中的容器

Docker

OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析

OpenHarmony开发者

OpenHarmony

智慧党建系统开发建设

a13823115807

大数据项目实施的成功与失败

松子(李博源)

数据中台 数据产品经理 数据治理 数据资产

行程码带星喜提八天(杂记篇)

松子(李博源)

游记 旅行

【图解数据结构】排序全面总结(上)

知心宝贝

数据结构 算法 排序算法 3月月更

突破地心引力!与KubeEdge一起迈向太空的云原生

华为云原生团队

开源 边缘计算 卫星定位 边缘技术 边缘云

洞见科技成为华东江苏大数据交易中心会员单位,创始人姚明获颁「年度数字经济卓越领袖奖」

洞见科技

数据中心 隐私计算 数据交易

AI+Science系列(一) :飞桨加速CFD(计算流体力学)原理与实践

百度大脑

Linux之yum命令

入门小站

Linux

企业知识管理包括哪些内容?

小炮

知识管理 企业

Sharpen助NGit实现托管Git命令_.NET_赵劼_InfoQ精选文章