Introducing Sun Yiyi’s Git Source Control Provider for Visual Studio 2008/2010
As teams become further and further separated, centralized source control systems like Microsoft’s Visual SourceSafe and Team Foundation Server quickly lose their appeal. In their place many developers have turned to distributed source control systems. The most popular one amongst .NET developers seems to be Git, which was originally created by Linus Torvalds for Linux kernel development.
One problem with Git is that it is predominately command-line based. While .NET developers are quite capable of working with the shell, most get quite annoyed when forced to leave the IDE for routine tasks. This is why Sun Yiyi’s Git Source Control Provider an important part of Git adoption. Sun Yiyi writes,
As a Visual Studio user, I would like to see files status in solution explorer. Otherwise I just don't have the feeling that the files are controlled by any source code management system. We are so used to see this when working with SourceSafe, Team Foundation Server, Subversion or even Mercurial. We want the similar experience with Git. I couldn't anything on the Internet, so I decided to make one myself.
The idea is to display the Git file status and make it as much close experience with VSS and TFS as possible. I kept the blue lock icon for checked in (committed/tracked) files and red check icons for modified files. Two new icons are added, the fellow plus and i icons. They represent new and staged status. They apply only to Git.
Opening Git controlled solutions with this plugin, the files are clearly marked differently as they are new, tracked, modified and staged. The current Git branch name is also display to remind you to work on correct branch. The feeling of source control is back.
There are two source control related functions that are handy for Visual Studio users I decided to implement as well. They are “compare file with last commit” and “undo file changes (restore file from last commit)”.
It is a encouraging starting point. I have got an eye candy. Now I started to think why should I right click to launch Git bash and type git init to create a new local repository? Can't I just right click and select initialize new repository?
At least for now, it is not intended to replace or overlap the functions of Git itself or other tools such as the Git Extensions. Functions like view history, check in/out, switch branches will be left to Git Bash and Git Extensions. Eventually I will carefully add a few common used functions, like init and commit. But the door to Git and Git Extensions will be always there.
When asked if Git should be used instead of TFS, Sun says not necessarily. “Although TFS' source control is not as advanced as Git, you may want to take the chance of implementing TFS to adapt application lifecycle management. It benefits entire team, including developers, PM, BA and QA.” He continues,
If modern source control features such as flexible branching, merging, and disconnected development are definitely needed, I would recommend Git. But be aware that there is nothing yet for you to use TFS for ALM and replace source control part with Git and keeps source control checkins with WIT integrated. Also the Visual Studio tooling support for Git is almost blank.
Its not like TFS doesn't have a solution
As teams become further and further separated, centralized source control systems like Microsoft’s Visual SourceSafe and Team Foundation Server quickly lose their appeal.
I realize its not the same as how GIT works, but TFS supports proxy servers which make it work just fine, even if your team is in a billion different locations. Cost prohibitive, maybe, but from a technical point of view, it works fine.
Re: Its not like TFS doesn't have a solution