As a long-time Visual SourceSafe user (& hater) I was discussing switching to SVN with a colleague; he suggested using Git instead, since apparently it can be used peer-to-peer without a central server (we just have a 3-developer team). I haven't been able to find anything about tools that integrate Git with Visual Studio, though - does such a thing exist? If not, can anyone report on their experiences using Git with Visual Studio?
I use Git with Visual Studio for my port of Protocol Buffers to C#. I don't use the GUI - I just keep a command line open as well as Visual Studio.
For the most part it's fine - the only problem is when you want to rename a file. Both Git and Visual Studio would rather that they were the one to rename it. I think that renaming it in Visual Studio is the way to go though - just be careful what you do at the Git side afterwards. Although this has been a bit of a pain in the past, I've heard that it actually should be pretty seamless on the Git side, because it can notice that the contents will be mostly the same. (Not entirely the same, usually - you tend to rename a file when you're renaming the class, IME.)
But basically - yes, it works fine. I'm a Git newbie, but I can get it to do everything I need it to. Make sure you have a git ignore file for bin and obj, and *.user.
While it is true that DVCS and Git in particular are the new hotness, it's also true that Windows is still very much "the undiscovered country" for Git.
It can be made to work, but forget about any kind of integration into the Explorer or Visual Studio.
SVN is actually pretty solid on Windows these days (TortoiseSVN + AnkhSVN + command line). If you really want to play with Git, use a blended approach. Use SVN for your shared stable repository and Git locally for experimental work and push changesets with git-svn.
There is a project called Git Extensions that includes add-ins for Visual Studio 2005, 2008 and 2010, as well as Windows Explorer integration. It's regularly updated and having used it on a couple of projects, I've found it very useful.
I find that git, working on whole trees as it does, benefits less from ide integration than source control tools that are either file based or follow a checkout-edit-commit pattern. Of course there are instances when it can be nice to click on a button to do some history examination but I don't miss that very much.
The real must-do is to get your .gitignore file full of the things that shouldn't be in a shared repository. Mine generally contain (amongst other stuff) the following:
*.vcproj.*.user
*.ncb
*.aps
*.suo
but this is heavily C++ biased with little or no use of any class wizard style functionality.
My usage pattern is something like the following.
1) Code, code, code in VS.
2) When happy (sensible intermediate point to commit code, switch to git, stage changes and review diffs. If anything's obviously wrong switch back to VS and fix, otherwise commit.
Any merge, branch, rebase or other fancy SCM stuff is easy to do in git from the command prompt. VS is normally fairly happy with things changing under it, although it can sometimes need to reload some projects if you've altered the project files significantly.
I find that the usefulness of git outweighs any minor inconvenience of not having full IDE integration but it is, to some extent, a matter of taste.
I've looked into this a bit at work (both with Subversion and Git). Visual Studio actually has a source control integration API to allow you to integrate third party source control solutions into VS. However, most folks don't bother with it for a couple of reasons.
The first is that the API pretty much assumes you are using a locked-checkout workflow. There are a lot of hooks in it that are either way expensive to implement, or just flat out make no sense when you are using the more modern edit-merge workflow.
The second (which is related) is that when you are using the edit-merge workflow that both Subverion and Git encourage, you don't really need Visual Studio integration. The main killer thing about SourceSafe's integration with VS is that you (and the editor) can tell at a glance which files you own, which must be checked out before you can edit, and which you cannot check out even if you want to. Then it can help you do whatever revision-control voodoo you need to do when you want to edit a file. None of that is even part of a typical Git workflow.
When you are using Git (or SVN typically), your revision-control interactions all take place either before your development session, or after it (once you have everything working and tested). At that point it really isn't too much of a pain to use a different tool. You aren't constantly having to switch back and forth.
As mantioned by Jon Rimmer, you can use GitExtensions. GitExtensions does work in Visual Studio 2005 and Visual Studio 2008, it also does work in Visual Studio 2010 if you manually copy and config the .Addin file.
a little late but i would suggest mercurial with visualhg for visual studio
Also don't miss TortoiseGIT ... http://code.google.com/p/tortoisegit/
The newest Release of Git Extensions supports VS 2010 now (along with 2008 and 2005).
I found it to be fairly easy to use with 2008 and the Interface seems to be the same in VS 2010.
Git Source Control Provider is new plug-in that intgrates Git with Visual Studio.
Hi
Is it any extension for git for MAC users? I would like to use git integrated with TextWrangler or any text editor in my MAC.