写点什么

孙以义开发的用于 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:593600
用户头像

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

关注

评论

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

黑幕!爆京东18A技术专家纯手打:小团队构建大网站架构实战

996小迁

Java 学习 架构 面试 笔记

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

既不能神化,也不要泛化区块链

CECBC

金融 数字技术

程序员跳槽,只要用好(2+2)方法论,绝对可以找到一家好公司

Java架构师迁哥

ARTS打卡 第21周

引花眠

微服务 ARTS 打卡计划 springboot

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

第五周课后练习

饭桶

现场突击京东程序员的购物车!看看"11.11"都买啥?

京东科技开发者

程序人生

openEuler进化记:一颗探索宇宙的生态之星

脑极体

保证缓存与数据库的数据一致性不是很容易

架构师修行之路

缓存 一致性

架构师训练营第六周作业

Geek_4c1353

马云:数字货币可能会重新定义货币

CECBC

金融

第五周课后总结

饭桶

Javaer 进阶必看的 RocketMQ ,就这篇了

yes

RocketMQ 消息队列

架构师训练营第 1 期第 6 周作业

业哥

SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

冰河

分布式 微服务 高性能 SpringCloud Alibaba

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

穆长春:数字人民币“双离线”支付开发完毕后续将试点

CECBC

数字钱包

这里有一份Java程序员的珍藏书单,请您注意查收

捡田螺的小男孩

Java 后端 PDF

甲方日常 38

句子

工作 随笔杂谈 日常

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

二十四、深入Python多进程multiprocessing模块

刘润森

Python

分布式关系数据库

韩向民

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

搜狗搜索或成为企鹅号流量入口:腾讯欲实现自己的流量闭环

石头IT视角

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

云原生时代 容器持久化存储的最佳方式是什么?

京东科技开发者

数据库 云存储

架構師訓練營第 1 期 - 第 05 周作業

Panda

架構師訓練營第 1 期

缓存架构不够好,系统容易瘫痪

架构师修行之路

缓存 微服务 架构设计

算法训练营毕业总结——以此自勉

Airship

算法 算法和数据结构

一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?

楼下小黑哥

支付宝 微信支付 支付系统 支付

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