Lately I seen reports about various distributed version control. Although it seemed useful (you can work on train argument), I didn't see any real benefit or reason to use it myself. Until today.
On my laptop I have multiple operating systems installed as virtual machines. I do the developement on main (host) system, and then try to deploy on various guest systems to see how stuff works. And sometimes something just doesn't work. So I have to change it in host system, copy to guest, recompile and try it. When you have to develop large piece of software for multiple platoform this becomes tiresome.
And then I figured it out. I setup the guest system to fetch code directly from main repository, did the changes on guest system, and when it worked fine I commited changes to main repository. There are two problems with this:
a) you must commit while working, i.e. you commit unstable code. This basically means you need to branch for each small feature you're working on - which sucks.
b) if the repository is unreachable (i.e. you DO work on train, or don't have Internet access for some other reason) you cannot basically do it, so you have dicrepancy between version in guest and host system.
So, I set up the local Subversion repository and worked there, which turn out to be great. However, the problem is migrating those changes to main repository when done. This is exactly the problem that distributed version control systems solve.
Now, I have to decide which one to use. If you can recommend some good, reliable, distributed version control system, please leave the comment and pros are cons of using it.