AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

Android中自定义下拉样式Spinner

android 程序员 移动开发

android之Fragment(官网资料翻译)

android 程序员 移动开发

Android动画之补间动画

android 程序员 移动开发

android各种提示Dialog 弹出框(1)

android 程序员 移动开发

android图片加载库Glide4使用教程(项目中如何快速将Glide3替换成Glide4)

android 程序员 移动开发

消息队列RocketMQ应对双十一流量洪峰的“六大武器”

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 流量

基于 OpenYurt & EdgeX Foundry 的云边端一体化解决方案

阿里巴巴云原生

云原生 边缘计算 openyurt EdgeX Foundry

Android常见问题及开发经验总结(一)

android 程序员 移动开发

Android使用ViewPager实现图片轮播系列之四:手动滑动 + 左右箭头 + 删除数据

android 程序员 移动开发

Android刘海屏、水滴屏全面屏适配方案

android 程序员 移动开发

Android厂商推送冲突了。。。

android 程序员 移动开发

Android企业级实战-界面篇-2

android 程序员 移动开发

Android刘海屏、水滴屏全面屏适配详解

android 程序员 移动开发

Android备忘录《内存泄漏》

android 程序员 移动开发

Android仿QQ锁屏状态下消息提醒(震动+提示音)

android 程序员 移动开发

android各种提示Dialog 弹出框

android 程序员 移动开发

Android命令Monkey压力测试,详解

android 程序员 移动开发

Android屏幕适配方案

android 程序员 移动开发

Android岗高频面试题二集,看你能答出几题?(含答案

android 程序员 移动开发

Android修炼系列(十二),自定义一个超顺滑的回弹RecyclerView

android 程序员 移动开发

Android内存泄漏问题

android 程序员 移动开发

Android体系化进阶学习图谱:我们究竟还要学习哪些Android知识?(某大厂内部资料

android 程序员 移动开发

基于 Istio 的全链路灰度方案探索和实践

阿里巴巴云原生

阿里云 云原生 istio 灰度 全链路

android下赚钱的几个方式

android 程序员 移动开发

Android与单片机---开发板---智能硬件---智能设备---数据协议--开发总结

android 程序员 移动开发

Android中关于Context的三言两语,源码强势分析带你了解Context!

android 程序员 移动开发

Android中自定义ViewGroup

android 程序员 移动开发

Android事件分发机制三:事件分发工作流程

android 程序员 移动开发

Android低版本上APP首次启动时间减少80%(一)

android 程序员 移动开发

Android属性动画——ObjectAnimator类及浮动菜单的实现

android 程序员 移动开发

Android平台HTTPS抓包全方案

android 程序员 移动开发

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