Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Obviously related to What's the best version control system? but i did not find anything for my particular case.

  1. I'm currently doing solo project all time. but other peoples may access it.
  2. Working on a ASP.net intranet administrative application.
  3. Also got a handful of VB6 apps that are still stored in Source Safe, may switch to .net someday.
share|improve this question

closed as not constructive by ChrisF Oct 5 '12 at 12:30

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

"Best" is masively subjective - there isn't a single best because its not that simple and depends on circumstances. However "What's good" and "why?" are perfectly sensible questions –  Murph Sep 22 '10 at 18:28
@Murph edited as your requested. –  DavRob60 Sep 22 '10 at 18:40

5 Answers 5

up vote 5 down vote accepted

Fossil is simple, reliable, ease and full of additional features like bug tracking and wiki. It's a distributed SCM like Git, Mercurial, but simpler. I think it fits very well to your needs. It has everything that a solo or small team needs.

If you want a more traditional VCS, i would go to SVN. Just a full centralized client-server VCS simple to use especially with TortoiseSVN

Both are free and open source.

share|improve this answer

Mercurial works right on Windows. It is a DVCS and it branches well.

share|improve this answer
Just getting my head wrapped around why it's such a good thing, but after reading Spolsky's intro, I'm feeling it. hginit.com –  MIA Sep 23 '10 at 1:02
How do Mercurial work with VB6 projects? –  serhio Jan 10 '13 at 11:30
@serhio: Well, those are just files, right? hg works with files. :-) But to leverage hg, the VB6 files will need to be some kind of plain text. Its been so long since I last saw VB6, I can't give you a good answer. –  Paul Nathan Jan 10 '13 at 19:45

Ok, I don't have a good answer, but I do have some opinions that will, hopefully, contribute to one.

Firstly your choice is between a server based system and a distributed one (DVCS).

The server based model is one that is well understood - the repository lives on the server, you checkout files locally and you commit changes back. You can do branches and tags and merges - usually without too much stress - and its all good.

DVCS is a bit more interesting - the notion of a central server is gone (which is both a good and a bad thing) instead you have local repository that you can clone (copy in its entirety) to as many places as you want on your local machine or on a remote machine. You can then push and pull changes between repository instances. This gives you a couple of advantages, its very flexible and its fast(er) no handshake between client and server. DVCS also use much finer grained diff algorithms/storage which means that they are better at merging (not perfect, been bitten by that, just better). The speed and flexibility encourages you to commit more often and the quality of merge encourages branching for distinct development strands at a very low level. Couple of problems - both significant - first is that you don't need a server and if your source code is only on one machine then you're losing one of the key benefits of VCS. Second is that there's nowhere obvious to go for the "definitive" copy - the line that's the core that you could build and deploy your live system from (because its the source for your live system). Fortunately (!) this is not exactly a hard problem to solve, you clone your repository to a server location, make that the "definitive" copy and then push completed features and fixes to that copy (and similarly pull from that copy if you want a clean set of code).

Whether you have server based of DVCS you should also consider getting a continuous integration (CI) server that builds your application(s) each time they are committed to specific branches (specific server based repositories if DVCS).


I use and can therefore recommend, I have for ages. Its good, it works and whilst yes, we've had some fun merging on occasions its very seldom been because of the limitations of SVN - more us not pulling changes over or inconsistencies in our IDE setups.

I'd also take a look at Sourcegear's Vault - http://www.sourcegear.com/vault - commercial (i.e. not free) but built by people who know what they're doing explicitly to replace SourceSafe.

I'm also playing with Mercurial which I like, a lot. I really really like the ability to do a local commit (commit early, commit often...) and the fact that it in theory it means I can commit changes that I couldn't using SVN because they would cause the build to fail. I haven't fully worked out the "server" side yet (I haven't yet got a CI server on my personal stuff) but the idea is that one commits changes locally 'til one gets to a point where one has a set that can safely/collectively be pushed to the (appropriate) server repository and its the push to the server that will trigger a build. I also need to play more with the notion of multiple concurrent development branches (kind of tricky for solo development!)

Suggesting a CI server is much easier, go for TeamCity - http://www.jetbrains.com/teamcity (I'm looking at hudson as well for my personal stuff)

Finally, opinions... I think, that if I were starting more or less from scratch, today, I would want a DVCS - for the "local" commit and the flexibility. I think they're harder to get to grips with if you have prior VCS experience but the benefits (if done right - got to be able to wire it into continuous integration) outweigh the challenges (e.g. the tooling isn't yet on a par with that for subversion - as evidenced by tortoiseSVN vs tortoiseHg).

I would probably choose Mercurial - but look at git and bazaar and fossil (and worry if you should wait for veracity...)

One last thought (I do go on) you need to think about how whatever you choose will fit into your organisation - the workflow you use get from source code in your repository to the live instance(s) of your application(s) - without a clear method for build and deploy (I deploy from builds from my CI server) you're not addressing the whole of the problem.

share|improve this answer

For solo projects I use Perforce. It integrates greatly with Visual Studio and the UI is nice. You can request a free license if your projects are open source, otherwise they have a free non-expiring 2-user version. I found it a delight to use, especially branching and merging, which are a pain in SVN. If you require more than two people, than SVN (with TortoiseSVN) is probably the best bet.

share|improve this answer


  • Has great tools on every OS, even in some IDEs
  • Branching is easy
  • Linear development cycle, perfect for single or multiple developers
  • Extremely simple, and GUIs simplify even more
share|improve this answer
Additionally there are tools that integrate with Visual Studio (not sure if they will hook into VB6 though). For windows easiest way to set up a server is to use VisualSVNServer (visualsvn.com) –  Murph Sep 23 '10 at 6:57
Branching is easy, but how about merging? Merging is a critical part of branching. Whats the point of easy branching if you can't merge (or rebase for that matter)? -1 –  alternative Oct 12 '10 at 10:37

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