Good day.
I know that we're supposed to ask questions that can be answered and not just discussed, so I'll try to make my question quantifiable, even though it's not completely so in nature.
I'm coding a few applications for a research project at my university. I have a few "main" projects, along with some that branch off. As time goes on, these branches have become harder and harder to control. In general, I have too many places I've stuck code projects. I'm the only guy who really works on these applications, but I do have some people who could certainly benefit from accessing the code. Furthermore, I'd like to clean up the projects for future uses, whether they be the continuation of my work after graduation by others, my own projects outside of work, or the ability to show future employers what my skills are.
One potential answer to this problem is version control software. I know of it, but I have not really used it... I've checked out a project or two from GitHub, but never actually dug in to what it takes to set up and operate such a system. There seem to be quite a few options out there these days, both proprietary and free.
I have the following desires for such a system:
Host-able on systems that I control. I have an Amazon EC2 Micro instance running for some of my work, so this would be one place I could install such software. Other machines are available to me as well, so I'm not necessarily constrained to the Micro instance, but for now, it is my main target. Right now, it's running a copy of Amazon's own Linux image, so ideally, the version control would run on Linux. While I want it to be hosted on my own systems, I don't want managing them to be a full time job... I'm a student and developer first.
Accessible via Microsoft Visual Studio. While I occasionally work in other environments, the lion's share of my work is done in C# on with Visual Studio 2012. Ideally, I could check out and merge changes in the IDE.
Well-documented. It should go without saying, but we've all been there before.
Easy to backup or transfer. I'm not sure what exactly is used to organize projects, but it would be nice if I could take my projects and move them to another version control system if I choose. Of course, since these are work files, I'd need to be able to back them up.
What are your suggestions regarding version control software with these criteria in mind? I'm a student and this is more or less a personal project of mine, so while I do have access to some proprietary systems for little to no cost (Microsoft products immediately come to mind), I don't have much money to sink in to this. Ideally, the solution is free. I hope the way I structured this question allows for a definite answer or set of suggestions.