Work uses SVN. I want to use GIT for private use. I was also exploring TFS, but it doesn't seem to cooperate with multiple collections, so I stopped looking into it.

Currently I use AnkhSVN. I want to switch between it and the Microsoft GIT, on a per-solution basis.

My question is... how do you smoothly use SVN on one project, git on the next, maybe even TFS on a third project (if I decide to look into it again)? Mercurial? etc

How do you manage switching between those stacks easily in Visual Studio, because it doesn't seem like it's made for easy transition between technologies or configuring Solution A for SVN and Solution B for GIT.

The only way I know is to use options and switch manually between technology stacks.

Options: Source Control Options: Source Control


Solution 1:

Git also has the ability to push to a subversion repository and pull from that repository so you could continue using git on all you projects and still use the SVN repositories when that is the projects source control.

The commands for it are all referenced with git-svn.

I found a pretty good tutorial about it.

http://viget.com/extend/effectively-using-git-with-subversion

Solution 2:

While this doesn't address easy plugin switching, if you're comfortable using GIT via command line (as all the cool cats recommend), the Package Manager console window is just a Powershell prompt, so you have access to git *whatever* without switching source control providers.

You can also set up a custom 'External Tool' to open up a command-line prompt (or other shell) targeting the solution directory, so you can call normal git commands. Mapping it to a hotkey like CTRL+~ makes it easier to pull up.

You can also install the "Open Command Prompt" extension which does the same thing, and has some config options to make it a little easier than the external tool. Change the default hotkey from ALT+SPACE via 'DebuggerContextMenus.ScriptProject.OpenCommandLine.Default' (or the others listed).

Sidenote: if you do use git via commandline, consider setting up some convenience aliases...