速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:051756
用户头像

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

关注

评论

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

这样准备面试定能轻松斩获offer!(内附精选java面试题与答案)

Geek_1df311

Java 程序员 架构 面试

智能客服"下半场":数据、技术与服务

百度大脑

人工智能

花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

Tom弹架构

Java 架构 设计模式

从落地效果看,转转选择TDengine的三个理由

TDengine

tdengine 后端 时序数据库

首次公布Java10W字面经,Github访问量破百万

热爱java的分享家

Java 架构 面试 程序人生 经验分享

直播带货软件原生开发直播带货小程序平台搭建

风行无疆

中科柏诚加入信创生态实验室,助力金融领域关键核心技术攻关

联营汇聚

硬核!阿里自爆虐心万字面试手册,Github上获赞89.7K

热爱java的分享家

Java 架构 面试 编程语言 经验分享

联想智慧服务获金耳唛奖总冠军暨业务交流会在京举行

科技大数据

AI 收藏夹 Vol.002

Zilliz

参赛必读!! 签约计划第二季考核要求

InfoQ写作社区官方

签约计划第二季 热门活动

Python代码阅读(第64篇):角度与弧度互转

Felix

Python 编程 Code 阅读代码 Python初学者

莫慌!阿里人用五个模块讲明白了SpringCloud,可下载

热爱java的分享家

Java 架构 面试 编程语言 经验分享

研发效能团队如何拥抱开源社区?一些前沿理念与朴素认知

Zilliz

IMS究竟有什么用?

鸿天hente

WorkPlus协同办公系统的优势有哪些?

WorkPlus

Js 异步处理演进,Callback=>Promise=>Observer

CRMEB

单元测试再出发

FunTester

Java 单元测试 测试框架 spock Groovy

淘特 Flutter 流式场景的深度优化

阿里巴巴终端技术

flutter ios android 移动应用 客户端开发

双非渣硕,在传统公司磨炼四年后成功拿到阿里offer!(附面经分享)

Geek_1df311

Java 程序员 架构 面试

PingCode Wiki 协同编辑技术揭秘

PingCode研发中心

wiki PingCode

InfoQ 写作平台优质创作者签约计划第二季,我们来了!

InfoQ写作社区官方

签约计划第二季 热门活动

ExoPlayer播放在线TS文件无声音问题分析

Changing Lin

11月日更

掘金新大陆——最后一个十亿蓝海

百度ERNIE新突破!登顶中文医疗信息处理权威榜单CBLUE冠军

科技热闻

盲盒app源码开发盲盒小程序原生开发搭建

风行无疆

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

汽车之家 x StarRocks:极速实时数据分析实践

StarRocks

大数据 数据分析 StarRocks OLAP数据库

为什么工业巨头们偏爱自建5G私有专网!

鸿天hente

限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

工具 | pg_recovery 设计原理与源码解读

RadonDB

数据库 postgresql 源码 RadonDB

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