How to use Mercurial from Visual Studio 2010? - visual-studio

Version Control noob alert
I've already installed both Mercurial, TortoiseHg and VisualHG into Visual Studio 2010. I've set in Visual Studio my source control to Mercurial.
When I right click on my solution, I already see HG's buttons in the context menu that appears there.
My question now is, how do I make this version control thing work? It seems I'll have to make some kind of configuration before, as it tells me "Solution is not under Mercurial version control" when I click in "HG Status".
Thanks

with tortoiseHG you can rightclick on an explorer window and do tortoiseHG -> Create Repository Here which runs hg init for you. I believe currently there is no way to run hg init from visualHG.

TekPub has a good free video for using Mercurial with TortoiseHG, VisualHG, and VS along with pushing the repository to the public via CodePlex. In it, Rob Conery shows how to create a repository in your VS solution and how to work with commits, branches, merging, etc.
It's especially good for those coming from a Subversion background because he points out how branches/merging/forking is not so challenging in Mercurial as it's been known to be in Subversion.
YouTube link as other link is dead:
https://www.youtube.com/watch?v=HV8e1NQ-8gU

Not sure how to do this within Visual Studio but it is easy to do from the command line. Just
exit VS and go to a command prompt at the root folder of the project(s) you want to put under source control and type "hg init". Then load the solution and verify that hg is the selected source code provider.

Related

How to uninstall git from Visual studio?

Please suggest the option of Uninstalling the GIT Source Control Provider. I've never used it and have used TFVC for many years. I have no intention of ever using GIT but today when I added a project to source control it went to GIT instead of TFVC even though my default provider was and always has been Visual Studio Team Foundation Server
I've never used it and have used TFS for many years. I have no intention of ever using GIT
Don't presuppose of the future! 😉
There is a big switch movement for a reason (even Microsoft switched to it internally). Perhaps you should have a careful look at it because it brings a lot more flexibility and other things that could improve your development workflow.
Also FYI, the right term is TFVC, not TFS (which is the whole ALM solution and that could host TFVC or git repositories) .
Anyway...
You must not uninstall git tool but uninstall git plugin of visual studio. There are some solutions proposed (remove some registry keys or rename extension file) here:
How can you disable Git integration in Visual Studio 2013 permanently?

Is it possible to have Visual Studio update from SVN when I open a solution?

I'm using Visual Studio 2010 with VisualSVN and TortoiseSVN, and would like the option of being prompted to update from source control whenever I open a solution, the way SourceSafe did. Is that possible?
to update from source control whenever I open a solution, the way SourceSafe
I think this update option is not a SourceSafe feature but rather it is the Get everthing when opening a project or solution option found in the Visual Studio source control options panel.
When Visual Studio connects to SourceSafe it does so using the MS-SCCI.
So if you use a MS-SCCI Subversion plugin this should also happen whenever you open a project or solution.
For example the Agent SVN is an MS-SCCI Subversion plugin and it should work this way.
You will have to build an extension for VS which will use the TortoiseSVN automation API ( http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html ) and do the update when you open a solution:
Or modify existing extensions ( integrations) like AnkhSVN to do that.
I don't think it has a way to auto-prompt you, but have you tried the AnkhSVN Visual Studio Subversion Plugin? It allows you to easily update solutions, add to, etc.

How to quickly switch source control providers in Visual Studio 2010?

I'm currently working on .Net projects that are using either Git or Mercurial (Hg) source controls. I use Visual Studio 2010 for all of these projects. As I often have to switch source control providers I was wondering if there's a quick way to do this, so I don't have to go Tools -> Options -> Source Control once an hour.
A much better solution would be if Visual Studio would recognize which source control provider it needs or maybe remember which provider was used for a certain project. Can that be done?
With a nudge in the right direction I managed to handle this problem even better then expected - no switching necessary.
For Mercurial solutions I use VisualHG and for Git I use Git Source Control Provider. I also installed HgSccPackage. Now I don't really know how or why this works, but I've got GitSCC selected as the Source Control Provider in the settings, but when I load a Mercurial project VisualHG takes over. All I have to do is set the SCC to VisualHG the first time I open the project, close the project, change back to GitSCC and when the project is reloaded VisualHG will be used for it.
Interestingly it does not work without HgSccPackage installed. If someone can explain this, please do.
Note that it does not seem to work the other way round.
I use Git in combination with VS 2010 by keeping a commandline screen open. I do my work in Visual Studio and when I'm ready to make a commit, I switch to the commandline screen.
If you do this, you can use Git and Mercurial side by side in combination with VS 2010.

AnkhSVN not Recognizing my Solution as being in Source Control

I did not go the route of using the ankhSVN context menu in VS to add my solution to SVN. I went the route (because I prefer to and like how tortoise does this) of using Tortoise to add my folder/project to SVN for the first time.
Then when I opened that solution, VS opens but ankhSVN still did not flag my files or recognize a connection to svn.
what's the deal? I don't want to be forced to only use ankhSVN to commit a project for the first time to SVN in order for ankhSVN to bind or recognize and kick in.
Most likely, AnkhSVN isn't loaded yet at this point. Go to Tools - Options - Source Control, and select AnkhSVN as the active SCC Provider. Then go to File - Subversion - Change Source Control, and connect/bind the solution. This causes Ankh to be loaded the next time you open the solution by annotating the sln file. Other people checking out the same sln file also benefit from this, because Ankh is then loaded directly.
The times I had this issue it was because SVN was updated and ankhSVN didn't support the type. I fixed this by either rolling back the SVN update or install the lastest version of ankhSVN which sometimes is the beta version.
I had the same problem, usually this fixes it:
Right click on the solution node of the Solution Explorer. In the context menu, go to Subversion... Refresh Status.
Or as Stefan points out, just use the Ankh toolbar in Visual Studio.

Using Git with Visual Studio [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
As a long-time Visual SourceSafe user (and hater) I was discussing switching to SVN with a colleague; he suggested using Git instead. Since, apparently, it can be used as peer-to-peer without a central server (we are a 3-developer team).
I have not been able to find anything about tools that integrate Git with Visual Studio, though - does such a thing exist?
What are the technologies available for using Git with Visual Studio? And what do I need to know about how they differ before I begin?
In Jan 2013, Microsoft announced that they are adding full Git support into all their ALM products. They have published a plugin for Visual Studio 2012 that adds Git source control integration.
Alternatively, there is a project called Git Extensions that includes add-ins for Visual Studio 2005, 2008, 2010 and 2012, 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.
Another option is Git Source Control Provider.
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.
Git Source Control Provider is new plug-in that integrates Git with Visual Studio.
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 Visual Studio. 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 Subversion and Git encourage, you don't really need Visual Studio integration. The main killer thing about SourceSafe's integration with Visual Studio 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.
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.
Code, code, code in Visual Studio.
When happy (sensible intermediate point to commit code, switch to Git, stage changes and review diffs. If anything's obviously wrong switch back to Visual Studio and fix, otherwise commit.
Any merge, branch, rebase or other fancy SCM stuff is easy to do in Git from the command prompt. Visual Studio 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.
Microsoft announced Git for Visual studio 2012 (update 2) recently. I have not played around with it yet, but this video looks promising.
Here is a quick tutorial on how to use Git from Visual Studio 2012.
Also don't miss TortoiseGit...
https://tortoisegit.org/
There's a Visual Studio Tools for Git by Microsoft. It only supports Visual Studio 2012 (update 2) though.
Visual Studio 2013 natively supports Git.
See the official announcement.
The Git support done by Microsoft in Visual Studio is just good enough for basic work (commit/fetch/merge and push). My advice is just to avoid it...
I highly prefer GitExtensions (or in less proportion SourceTree). Because seeing the DAG is for me really important to understand how Git works. And you are a lot more aware of what the other contributors to your project have done!
In Visual Studio, you can't quickly see the diff between files or commit, nor (add to the index) and commit only part of modifications. Browse your history is not good either... All that ending in a painful experience!
And, for example, GitExtensions is bundled with interesting plugins: background fetch, GitFlow,... and now, continuous integration!
For the users of Visual Studio 2015, Git is taking shape if you install the GitHub extension. But an external tool is still better ;-)
TortoiseGit has matured and I recommend it especially if you have used TortoiseSVN.
The newest release of Git Extensions supports Visual Studio 2010 now (along with Visual Studio 2008 and Visual Studio 2005).
I found it to be fairly easy to use with Visual Studio 2008 and the interface seems to be the same in Visual Studio 2010.
The simplest solution that actually works quite well is to add the TortoiseGit commands as external tools.
Solution to adding a Git (TortoiseGit) toolbar to Visual Studio
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.
Currently there are 2 options for Git Source Control in Visual Studio (2010 and 12):
Git Source Control Provider
Microsoft Git Provider
I have tried both and have found 1st one to be more mature, and has more features. For instance it plays nicely with both tortoise git and git extensions, and even exposed their features.
Note: Whichever extension you use, make sure that you enable it from Tools -> Options -> Source control -> Plugin Selection for it to work.
As of 2013-02-11, the Microsoft Git plugin for Visual Studio 2012 should work with the Express version as well.

Resources