Question

I'm a lone developer at the moment; please share you experiences on what is a good VC setup for a lone developer.

My constraints are;

  • I work on multiple machines and need to keep them synced up
  • Sometimes I work offline

I'm currently using Subversion(just the client to a remote server), and that is working ok. I'm interested in Mercurial and git DVCS, but none of their use-cases make sense to my situation.

EDIT: I've migrated my active development to Fossil http://www.fossil-scm.org/ after trialing it with a client. I really like the features to autosync my repositories(reducing accidental forks), the documentation support(both wiki and embedded/versioned) that supports my need to document the code and the project in different spaces, the easy to configure issue tracker, nice access control, skinnable web interface and helpful community.

Was it helpful?

Solution

Might I suggest a rather new version control called fossil.

This is not a me too project, it is written by Dr. Richard Hipp, same guy who did SQLite. The whole repository is a SQLite file, so it is very solid. You have a wiki and a ticket system built in. You can have many users with varying rights, so you can for example give your users right to issue tickets but not view source code.

This is pretty simple, straight forward and it works as a distributed system, meaning you can clone and checkout locally and remotely.

More info can be seen on http://www.fossil-scm.org/ and if you look closely you see that the whole site is actually fossil.

One thing that really impressed me with fossil is that it is just one file, thats it. The whole fossil program is rather small, but considering who the author is, that is not really a surprise.

And since your repository is a sqlite file, you simply copy it and you have a backup.

OTHER TIPS

Each person will probably tell you that their favorite DVCS is the best for you. I would tell you Mercurial is the best! ;-)

But that's crap. You definitevely need a DVCS, but try them all, or at least the mostly used ones, and make your choice by yourself. Choosing the DVCS that you know a guru for is also a sensible choice, BTW. I'd recommend trying (or reading the documentation of) at least Mercurial, Git and Bazaar. SVK may have the desirable feature that it's designed to interact with SVN, but last time I checked they had nasty performance issues. Git also has some SVN interaction plugin, AFAIK.

Working offline absolutely makes sense for Git. You can browse your entire history, make commits, do merges, create branches, essentially do everything related to your repository offline. Furthermore, you can set up a central repository which is the "master", that is you will push all your changes to that central repository. That way you always know where the latest code is, but you also get the benefit of being able to send changes from one machine to another if you ever need to.

I recently converted all my 80+ Subversion repositories to Git, and I haven't looked back.

Bazaar: See the solo use case and Bazaar in 5 minutes.

Especially for offline usage, a distributed version control system is the way to go.

Subversion works great (especially with TortoiseSVN). I don't think any distributed VC would have an advantage in a single developer scenario.

Edit: I hadn't noticed the "sometimes I work Offline" part when I originally replied. In that case, I suppose you must weight the added complexity of a DVCS with the fact that it gives you offline history / revisions.

I always recommend darcs for this situation (here's my answer to a similar question) as its command line user interface is a joy to use and joy is what I want from my own development :)

Git comes bundled with some workable GUIs, but I've found it too unwieldy in comparison to darcs when I hit the command line to use for personal projects.

Either will satisfy your need to work offline and they're both easy to synchronise changes with.

Subversion requires access to a centralized repository. If you are working offline and from multiple machines, that means you cannot make revisions while offline.

A bare bones Unix solution would be to keep a history inside the working dir with RCS, and synchronize the working dir (including history) between different machines using Unison. The main caveat would be that, if you switch machines, you would first need to sync them before you start committing new revisions. If that is a problem, you best look into a real DVCS.

You may find the answers to the question I asked helpful: alternative to VSS for a one man show (army of one?):

Alternative to VSS for a one man show (army of one?)

You have to try a DVCS (or what i call a peer2peer VCS). I'm agree with nowhereman. Don't waste time with svn and all the soft made arround it to make it sort of useful. A DVCS it's more intuitve that the old and deprecated client-server style. SVN doesn't know what is a tag, or a branch. For Svn all are just copies.

For example: it's so dificult to implement a tag as a synonymous of a revision number.

In mercurial a tag is just that. You can't keep tracking versions of a tag as you can in svn.

Read here dvcs guide to start. Then you can use svk, mercurial aka hg or git. But please don't go back in time

I'm a big fan of distributed version control. I've played around with git, mercurial, and bzr, and I now use git for all my projects. All three of these are great for personal use because it's so simple to create a new repository on your computer. You don't have to run any servers.

Here are a couple of ideas for sharing your repository across multiple computers. 1) Use some hosted service like github. Usually these are free for open source projects and low fee for commercial projects. We're using github at work. 2) Use dropbox to create a shared internet-backed up disk that all your computers can access. It's free for less than 2 GB. (If you're on Ubuntu, Ubuntu One is another alternative.) Put your master git repository on dropbox and then put local repositories on each of your computers. (So, dropbox plays the same role as github.) It's completely free, allows you to work offline easily, allows you to share the repository with other developers later if you need to, and it's backed up automatically.

Also, if you really want to use SVN, look at a hosted solution like cvsdude (despite the name, they do run SVN) rather than running your own server. You'll be able to access your code from anywhere, and it will only cost you ~$5-10/month.

SourceGear Vault is free for one developer and is very good.

i recommend assembla.com - they provide free svn , wiki and trac. Cant get any better than that!

If you're comfortabel with subversion, i suggest you have a look at SVK

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top