50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

产品升级|1-2月合刊:多款重磅产品来袭

百度大脑

客户画像赋能百度推广生态实践

百度Geek说

前端 后端

Python 的排序方法 sort 和 sorted 的区别

AlwaysBeta

Python

错误码设计思考

木小风

Java 架构 错误码

恒源云(GpuShare)_租卡怎么选?看这一篇就够了!

恒源云

人工智能 GPU服务器

Go 中的空白标识符(下划线)

宇宙之一粟

Go 语言 3月月更

windows下C与C++执行cmd命令并实时获取输出

DS小龙哥

3月月更

提升客户服务体验的技巧

小炮

客户服务 SaaS平台

Apache ShardingSphere 5.1.0 执行引擎性能优化揭秘

SphereEx

数据库 ShardingSphere SphereEx apache 社区

企业如何挖掘知识“金矿”?这本白皮书讲得够透彻!

百度大脑

地狱开局的2022,穿好你的安全铠甲

脑极体

【愚公系列】2022年03月 Docker容器 Kafka集群的搭建

愚公搬代码

3月月更

浅谈信息熵在数字体验监控领域的应用

博睿数据

Kubernetes中API的不同版本, Alpha, Beta, Stable 都是什么?

工程师薛昭君

Kubernetes API

ABAP 文件上/下载

Jasen Ye

upload abap download template GRAPHICS

弱监督语义分割:从图像级标注快进到像素级预测

网易云信

安全

AI+遥感智能解译,赋能智慧城市规划革新

百度大脑

治理有精度,AI赋智加强城市精细化管理

百度大脑

Nginx限速模块初探

喀拉峻

nginx

手把手教你从Apk中取出算法

奋飞安全

android 安全 java

TDesign React Starter 发布

TDesign

加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源

华为云开发者联盟

软件 DevOps 代码托管 智能调度 华为云DevOps

从建好到用好,阿里云原生微服务生态的演进

阿里巴巴云原生

Java AOT之GraalVM native image介绍以及简单长连接服务实践

BUG侦探

GraalVM java aot native image

详细的网站定制步骤有哪些?

源字节1号

网站开发 软件定制

从0到1落地电商小程序之微服务设计

晨亮

「架构实战营」

你的“数学潜意识”原来可以被唤醒!

博文视点Broadview

自动化知识图谱表示:从三元组到子图

第四范式开发者社区

人工智能 自动化 知识图谱

网络安全入门5天速成教程: WEB安全渗透攻防技术

网络安全学海

网络安全 安全 信息安全 渗透测试 WEB安全

无监控不运维—浅述各种监控方案使用场景

穿过生命散发芬芳

3月月更

项目管理标准化的武林秘籍

大智若愚

团队管理 项目管理 标准化 软技能 标准框架

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