I have started working on what I expect to become, by far, the largest project I’ve ever done, and I’ve come to the conclusion that I really need to start using some kind of version control beyond my current dated zip files and a txt file of comments. I’ve looked into a number of different options but I’m just not finding anything that I feel is a fit for me.
One of my big complaints is the total lack of a quality GUI in any of the available options, TortoiseSVN seems to be the best of what’s out there, and is still terribly unintuitive (I have nothing against FOSS, but this does seem to be a common problem among OSS projects). Reading the guides and manuals for SVN and other version control systems feels to have a complexity level akin to learning a new programming language.
I’m a solo developer, so I require very limited (if any) merge support and branching capabilities, no real need for multi-user systems, I have no need for distributed repositories. Basically what I would like is something akin to an automation of my zipping process with organizational support, commenting and basic diff options.
I have been toying with the idea of rolling my own program to fit my needs, to those ends I tossed together a very basic GUI mock-up to figure out what it would look like. Please ignore any spelling and organization/logic mistakes.
Please see mock-up here:

This is little more then a “napkin sketch” really. The way I envision functionality is that you would drag a version out of the tree and drop it where you wanted it. It would create a directory containing that version of your project. There would be a hidden file with in the directory that would contain the version information. When you wanted to create a new version, you would drag and drop that folder into the tree view. If you were working with a Version that was not the most current it would create a branch. It would check for file changes/moves/renames and prompt for general version, and specific file comments.
My Question here is multifold. Is there anything out there similar to what I’m looking for? (I’m open to reasonably priced non-free options).
If not, is this a worthwhile project? If so would there be any call for this kind of a program in the programming community at large that would make it worthwhile to polish the program as an end user product?
@josh3736
right now, now, yet — I know what you mean here; I would consider multi-user support as something I would be adding to the system in a later version, and would plan accordingly. As for merge support, I would never work with more than a small team on any of my projects and thus would have no need for anything more than the basic merge support. thus far — I guess it would have been more clear to say that I disagree with the concepts behind Distributed Repositories and simply would not use them. I’m not arguing the need and usefulness of these features in a large business project, or in a large FOSS project – but I wouldn’t use Oracle to keep track of my friend’s phone numbers. While a custom GUI is a good suggestion, it really isn’t a project for me. IMHO it exemplifies what I see as the primary problem in the development of OSS systems such as SVN, being built from various components wrapped around and built on top of one another leads to a highly unintuitive system (in general, not just the GUI) with no clear design or focus.
I too was once intimidated by the complexities SVN. However, I forced myself to really dig in to it, and I’ll never, ever go back. It really didn’t take that long to get the hang of it. Tortoise really isn’t that bad UI-wise once you’ve got the feel for it. If you’re on Windows, VisualSVN (free) makes setting up a server pretty painless.
I now create a SVN repository for even the simplest of projects. Even on one-man projects, the ability to check out a working copy on multiple computers is wonderful. That way, I can work on my project from my desktop or my laptop without worrying about keeping straight which computer has the most recent version of which file. Just update, merge, and get on with my life.
I will recommend against rolling your own. Version control is a problem that’s already been solved; you’ll spend more time reinventing the wheel than you will working on the project that actually interests you. Plus, it’s helpful to think, “I’m a solo developer right now, so I require very limited (if any) merge support and branching capabilities now, no real need for multi-user systems yet, I have no need for distributed repositories thus far.”
If you’re still not sold on the UI of the SVN tools available, there’s still a happy medium: why not use the SVN API to roll a GUI front end that addresses the deficencies you see in current SVN tools? If you’re using .NET, SharpSvn is a fantastic C# wrapper of the API.
If this will be the big project you see it as, it is—in my opinion—better to start using a proper SCM tool now, even if there is a bit of a learning curve.