写点什么

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

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

关注

评论

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

用AI赋能基础教育,小度人工智能青竹公开课现已走进6所知名小学

科技热闻

一个解决tcp粘包问题的c++代码

linux大本营

TCP 网络协议 C++ TCP 粘包

强强联手:机器学习与运筹学

鼎道智联

算法

linuxc获取文件内容

linux大本营

Linux

sougou的workflow的10个技术点

linux大本营

workflow 异步框架 C++

5.10版本的linux内核pgtable_init函数解析

linux大本营

Linux内核

大连理工大学OpenHarmony技术俱乐部正式揭牌成立

极客天地

c语言把8个char类型的值(char中存放的是16进制值)转换成一个int类型代码

linux大本营

C语言 char int

awk常量和标识符

linux大本营

脚本 awk

用c++写一段快速排序算法

linux大本营

排序算法 数据结构与算法 C++

HSM加密机集群&监控方案

白粥

监控 集群 加密机

和面试官聊1小时Java并发,多亏GitHub上这份笔记

做梦都在改BUG

Java 并发编程

在毫秒量级上做到“更快”!DataTester助力飞书提升页面秒开率

字节跳动数据平台

大数据 AB testing实战 用户体验 企业号 4 月 PK 榜 秒开率

华为开发者大赛中国区正式启动 携手探索ICT无限可能

极客天地

sqlserver锁表产生的原因

linux大本营

数据库· SQL sever 表锁

5.10版本的linux内核setup_kmalloc_cache_index_table函数解析

linux大本营

内存管理 内存泄漏 Linux内核

5.10版本的linux内核create_boot_cache函数解析

linux大本营

Linux内核

洞见数字时代的创新原力,数云原力大会暨 2023TECH 第五届数字中国技术年会开幕

通明湖

Linux常用命令

追赶者

进程 SSH Liunx 端口占用

第二届广州·琶洲算法大赛启动,百度飞桨助力广州打造中国算法新高地

飞桨PaddlePaddle

算法 百度飞桨 文心大模型

c++实现一个tcp高性能网络服务器

linux大本营

TCP 多线程 异步IO epoll 高性能服务器

c++生成pdf

linux大本营

C++ libHaru

eBPF的发展演进---从石器时代到成为神(二)

统信软件

Linux Kenel 内核 Linux内核

Springboot之如何纯文本转成.csv格式文件?|超级详细,建议收藏

bug菌

Spring Boot 2 spring-boot 三周年连更

【微信小程序管理】第三方软件的优势有哪些

没有用户名丶

如何系统地学习Spring Boot?

博文视点Broadview

麻了,不要再动不动就BeanUtil.copyProperties!

做梦都在改BUG

使用了Spring的事件机制真香!

做梦都在改BUG

Java spring

Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

汀丶人工智能

人工智能 机器学习 深度学习 Gradio AI可视化

Apache Flink ML 2.2.0 发布公告

阿里云大数据AI技术

大数据 算法 企业号 4 月 PK 榜

机器学习分布式框架Ray

AIWeker

Python 分布式 python小知识 三周年连更

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