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.

closed as too broad by gronostaj, Darth Android, Tog, nhinkle Jul 12 '13 at 0:04

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    It looks like you can use Git with Visual Studio 2012. hanselman.com/blog/… visualstudiogallery.msdn.microsoft.com/… According to the latter page, it should work with VS2012 Express. I haven't tried it but it should be worth looking into, since the cost for Git is approximately $0 + time spent. – a CVn Jul 11 '13 at 18:01
  • Is it possible to host a Git repository on your own machine? – nerdenator Jul 11 '13 at 18:04
  • I don't see why you couldn't run a Git server on the local host. After all, it's just a piece of software and you configure Visual Studio to connect to your source control server of choice. – a CVn Jul 11 '13 at 18:05

There is Git support for Visual Studio, which apparently works with all editions (VS Express and up) but requires at least 2012.2.

I haven't used it myself, but admit I have looked at it briefly. The Git server runs on Linux (and likely Windows) and costs nothing, so the only outlay is the time required to set it up and learn how to use it. From the looks of the screenshots, it integrates fully into Visual Studio in pretty much exactly the same way that TFS/TFVC support does.

Once you have everything installed, there should be options inside Visual Studio for configuring which source control server to connect to, allowing you to connect either to a server running on that EC2 instance of yours, a service running on the local computer (just pointing Visual Studio to localhost should be enough), or somewhere else entirely. I don't have a Visual Studio 2012 installation set up with source control, though (let alone source control through Git), so can't provide exact steps. The screenshots on the download page do look useful enough, however.

  • I'll give it a shot and let you know how it goes. Thanks for the suggestion! – nerdenator Jul 11 '13 at 18:09
  • @AaronMcRuer Let us know how it goes, and please remember to accept the answer that helped you the most once you consider the question answered. – a CVn Jul 11 '13 at 18:10
  • 1
    Ended up going with this option, and it does everything I need. Thanks! – nerdenator Jul 16 '13 at 18:56

Have you looked into TFS Express? It's a free version of Team Foundation Server that should help with your needs. I'm not sure how or if it works on Linux, however. I use TFS Express for my home setup and it's a piece of cake to install (It automatically installs SQL Server and configures it for you) and gives you all the features you'll need.

Being a student, you also have access to a free copy of VS Premium, which also allows you to use Team Foundation Server.

Either of these options link seamlessly with Visual Studio.

Not the answer you're looking for? Browse other questions tagged or ask your own question.