限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

Spring Cloud Alibaba 2022.0.0.0 版本发布啦!

阿里巴巴中间件

阿里云 云原生 Spring Cloud Aliababa

华为云CDN为企业下载加速,极大提升客户体验

i生活i科技

CDN

架构实战营 模块四作业

白杨

2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <

福大大架构师每日一题

算法 rust Solidity 福大大

看不见的控制流 — Rust 异步取消问题的几点思考

Greptime 格睿科技

数据库 rust 异步编程 tokio

Java在Mac里启动一个新的Terminal

IT蜗壳-Tango

IT蜗壳教学

读 2022 年 JavaScript 趋势报告

devpoint

typescript vite SOLID tauri

更可靠、更高效的华为云ECS,助力企业业务迅速起飞

秃头也爱科技

华为云云原生数据库,激发数据活力

与时俱进的时代

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

华为云OBS助力企业解决数据存储难题

科技说

Jira + GitLab 实践 DevOps

跟YY哥学Jira

DevOps gitlab jenkins Jira

瑞萨E1/E20烧录工具自检方法

不脱发的程序猿

嵌入式 汽车电子 MCU 瑞萨 RH850

华为云OBS对象存储,企业存储的好帮手

科技说

聊一聊华为云弹性公网IP的那些事儿

路过的憨憨

用大数据服务医疗行业,华为云大数据BI,为医院智能决策提供保障

秃头也爱科技

华为云数据库,安全、专业,值得信赖

与时俱进的时代

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

码界西柚

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

安全、高效、便捷,华为云CDN助力企业体验升级!

i生活i科技

CDN

Python数据可视化:数据分布图表可视化

不脱发的程序猿

Python 数据可视化 大数据分析

华为云为瑞星量身打造下载加速方案,助力瑞星完成产品升级

秃头也爱科技

CSDN 2022年度榜单揭晓,华为端云协同智能流程机器人斩获大奖

极客天地

告别“自建房”,华为云ECS为企业提供更优选

科技说

华为云CDN全站加速助力网站性能全面优化

i生活i科技

CDN

华为云桌面Workspace荣获CSDN年度创新产品与解决方案大奖

极客天地

Atlassian FaaS 云开发平台 Forge 解析

跟YY哥学Jira

Jira Atlassian 云版 app development Forge

数据上云难?华为云对象存储服务OBS给企业最便捷体验

路过的憨憨

华为云ECS弹性可扩展,为企业提供可靠、稳定、灵活、高效的计算环境

秃头也爱科技

解决企业数据存储难题:华为云OBS,企业“上云”的不二之选

路过的憨憨

华为云弹性云服务器 ECS,如何引领行业高速发展?

路过的憨憨

数据即价值,华为云大数据BI解决方案助力企业实现数据高效转化

秃头也爱科技

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