写点什么

孙以义开发的用于 VS2008/2010 的 Git 源代码控制提供器

  • 2010-06-19
  • 本文字数:1398 字

    阅读完需:约 5 分钟

由于现在的很多开发团队变得越来越分散,类似微软的 Visual SourceSafe 和 Team Foundation Server 这样的集中式源代码控制系统很快就失去了吸引力。在这种情况下,很多开发人员转而使用分布式源代码控制系统。在.NET 开发人员当中,最流行的一款莫过于 Git ,它最初由 Linus Torvalds 为 Linux 内核开发而创建。

使用 Git 的一个问题就是,大部分功能要通过命令行来操作。而.NET 开发人员更习惯于使用用户界面,所以在进行日常任务的时候不得不离开 IDE 的界面,确实让人很不爽。这也就是为什么孙以义的 Git Source Control Provider(Git 源代码控制提供器)成为采用 Git 的一个重要条件的原因。孙以义写到:

作为一个 Visual Studio 用户,我希望在解决方案管理器中看到文件的源代码控制状态。否则我不会觉得这些文件正在被某个源代码管理系统所控制。在使用 SourceSafe、Team Foundation Server、Subversion 或甚至 Mercurial 的过程中,我们已经非常习惯这种方式了。在使用 Git 的时候,我们也希望得到类似的体验。在互联网上我没有找到任何有用的东西,所以只好决定自己弄一个。

基本想法就是显示 Git 文件状态,并让整个体验和 VSS 和 TFS 尽可能接近。我让已签入(已提交 / 已跟踪)的文件依旧显示蓝色的锁定图标,为已编辑的文件显示红色勾选图标。也添加了两种新图标,黄色的加号和“i”状图标。它们分别代表新建和登台(Staged)状态。这两个特殊类型的图标只是 Git 所独有。

使用这个插件打开 Git 所控制的解决方案,根据文件所处的是新建、已签入、已编辑和待登台的状态,而被清楚地进行不同标记。当前的 Git 分支名称也会显示出来,以便提醒你是否工作在正确的分支上。源代码控制的感觉又回来了。

对于 Visual Studio 用户而言,有两个源代码控制相关的功能是非常方便的,我也决定一并实现。它们是“和最后提交的版本进行文件比较”和“回滚文件变更(从最后提交的版本恢复文件)”。

这是一个令人激动的起点。我或许把它弄得有点花哨了。现在,我开始考虑,为什么我应该点右键来启动 Git 的命令行,并输入 git init 来创建新的本地代码库呢?我就不能仅仅点右键就选择初始化一个新代码库吗?

至少目前,这个插件还没有打算代替或重复 Git 本身或 Git Extensions 这样工具的功能。类似查看历史、签入 / 签出、转换分支将会依赖于 Git Bash 和 Git Extensions 的功能。最后,我将会很小心地添加一些常用的功能,比如 init 和 commit 等功能,不过通往 Git 和 Git Extensions 的大门就此打开了。

在问及 Git 是否可代替 TFS 来使用时,孙以义说这并无必要。“虽然 TFS 的源代码控制不如 Git 这样先进,但如若需要进行应用程序开发生命周期管理的话,TFS 还是应该采用的。TFS 对于包括开发人员、PM、BA 和 QA 的整个团队很有用处。”他继续谈到:

如果诸如灵活的分支、合并以及脱机开发这样的现代源代码控制特性确实需要的话,我当然就推荐大家使用 Git。不过要知道,用 TFS 来进行 ALM,而用 Git 来代替源代码控制功能,还没有办法保证源代码控制的签入和 WIT(TFS 工作项)集成在一起。同时,Visual Studio 对 Git 的工具支持也几乎是空白。

这个插件编译好的版本放在了 Visual Studio 资源库。这是一个基于微软公共许可协议(MPL,Microsoft Public License)的开源项目,可以在 CodePlex 获取它的源代码

查看英文原文: Introducing Sun Yiyi’s Git Source Control Provider for Visual Studio 2008/2010

2010-06-19 07:593084
用户头像

发布了 254 篇内容, 共 56.7 次阅读, 收获喜欢 2 次。

关注

评论

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

面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》

小傅哥

Java 面试 小傅哥 ReentrantLock 公平锁

23张图!万字详解「链表」,从小白到大佬!

王磊

Java 数据结构与算法

国内外互联网大厂工程师联合推荐:程序员三门课+151个建议

小Q

Java 学习 编程 程序员 开发

看完这篇你还能不懂C语言/C++内存管理?

C语言与CPP编程

c c++ C语言 内存管理 编程开发

C++中的vector和Java中的ArrayList的构造函数的区别

jiangling500

Java c++ ArrayList vector

【原创】Spring Boot一口气说自动装配与案例

田维常

springboot

【原创】Spring Boot 过滤器、监听器、拦截器的使用

田维常

springboot

【原创】Spring Boot终极篇《下》

田维常

springboot

追风人与笃行者:云手机的2020风云录

脑极体

如何将MySQL查询优化到极致?

冰河

MySQL sql 性能优化 查询优化 查询

刷了LeetCode的链表专题,我发现了一个秘密!

Simon郎

Java 面试 链表

【原创】Spring Boot 集成Spring Data JPA的玩法

田维常

springboot

Spring Boot 集成 Druid 监控数据源

田维常

springboot

Spring Boot 如何快速实现定时任务

田维常

springboot

redis的stream类型命令详解

LLLibra146

redis stream 消息队列

vivo 云服务海量数据存储架构演进与实践

vivo互联网技术

数据库 架构 云服务 数据存储

【原创】Spring Boot终极篇《上》

田维常

springboot

送你4句口诀 云存储选型不再犯难

京东科技开发者

云存储

Polkadot系列(二)——混合共识详解

QTech

区块链 polkadot

如何快速构建Spring Boot基础项目?

田维常

spring Boot Starter

浅析一个较完整的SpringBoot项目

田维常

sping

【原创】Spring Boot集成Redis的玩法

田维常

spring Boot Starter

【原创】SpringBoot快速整合Thymeleaf模板引擎

田维常

springboot

【原创】Spring Boot 如何手写starter

田维常

springboot

Redis-缓存雪崩,缓存击穿,缓存穿透

topsion

redis

一期二班 - 吴水金 - 第五课作业

吴水金

高防服务器是什么?

德胜网络-阳

设置Vmware中的Ubuntu为桥接模式

jiangling500

ubuntu vmware 桥接

【原创】Spring Boot集成Mybatis的玩法

田维常

springboot

面试官:Java装箱与拆箱的区别?

田维常

springboot

社会正在惩罚不读书的人!这份程序员进阶书单,值得收藏~

田维常

程序员 电子书

孙以义开发的用于VS2008/2010的Git源代码控制提供器_.NET_Jonathan Allen_InfoQ精选文章