写点什么

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

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

关注

评论

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

架构师实战训练营|课后作业| 1

Frode

#架构实战营

NodeJs深入浅出之旅:异步I/O (上)🐋

空城机

JavaScript 大前端 Node 8月日更

云与AI真的能互相成就?还是最好各自独立行走?

脑极体

阿里巴巴最新产物!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

Java spring 程序员 架构 后端

程序员作图工具和技巧,你 get 了么?

程序员鱼皮

Java 大前端 后端 架构设计 代码

Alibaba史上最牛的分布式核心原理解析全彩手册开源!称霸GitHub

Java~~~

Java 架构 面试 分布式 微服务

牛逼Git,豆瓣评分高达9.3神著“Pro Git”电子版国内首次开源

Java~~~

Java git 架构 面试 架构师

脉脉转发3W次的字节内部首发“数据结构算法”手册!惨大厂被封杀

Java~~~

Java 架构 面试 算法 架构师

纯CSS实现beautiful按钮

执鸢者

CSS 大前端 按钮

在线JSON转PHP Array工具

入门小站

工具

百度地图开发-引入地图SDK并配置 02

Andy阿辉

android Android 小菜鸟 8月日更

重构你的css吧!(初看)

云小梦

CSS bem elementUI scss ITCSS

阿里新产!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

Java~~~

Java spring 架构 面试 Spring Cloud

教你一招疯狂拿Offer!用微服务设计一个超大型分布式电商平台

Java~~~

Java 架构 面试 Spring Cloud 架构师

架构实战营作业--模块一

冬瓜茶

Go- goto和label

HelloBug

Go 语言 goto label

☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

码界西柚

Java 编译器 技术栈 8月日更

获取 NodeJS 程序退出码

编程三昧

node.js Node 8月日更

CSS 数学函数之calc、clamp、min、max

devpoint

CSS css3 8月日更

暴力美学,拒绝平庸,Alibab开源内部神仙级“K8S核心笔记”下载

Java~~~

Java 架构 面试 微服务 k8s

网络攻防学习笔记 Day114

穿过生命散发芬芳

网络安全 8月日更

半监督学习概述(二)

Databri_AI

学习 深度半监督

小说类公众号如何运营:先要满足特定读者人群

石头IT视角

ShardingSphere JDBC 分库分表 读写分离 数据加密

Java 源码 ShardingSphere

聊聊 Linux 登陆提示信息 motd 文件

耳东@Erdong

Linux 8月日更 motd

懵逼!阿里一面就被虐了,幸获内推华为技术四面,成功拿到offer

编程susu

Java 编程 程序员 面试 计算机

Linux之export命令

入门小站

Linux

【漏洞分析】远程命令执行漏洞总结

网络安全学海

网络安全 信息安全 网络 渗透测试 安全漏洞

不少同学想要放弃秋招了........

今晚早点睡

程序员 秋招

HVEC安装与卸载

林建

HVEC DISM++

架构实战营 模块一作业

💤 ZZzz💤

架构实战营

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