Software Woes

Rants, tips and tricks

Monday, February 19, 2007

Benefit of distributed version control

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.


At 1:30 PM, Blogger Nemanja said...

I haven't seriously used any distributed VCS yet, but I do have some favorites. LOL

In your situation, I'd seriously look into svk if you haven't yet. Here's an excerpt that you might find interesting: SVK let clkao mirror remote Subversion repositories, create local branches, hack while offline and later resynchronize his changes with the upstream Subversion servers.

Failing that, I can only testify that monotone works. I'd dare even say it works very well. It requires a bit of time to get used to, but there's a nice tutorial to get you started, or at least to help you decide if you want to spend any more time on it, which I'd recommend.

Keep in mind, though, that monotone is seriously lacking in GUI department, especially on windows, compared to Subversion/svk.

Other then that, only "problem" with it is that it uses SQLite for storage, and not Firebird. LOL

At 12:57 AM, Blogger Milan Babuskov said...

In October 2007, I decided to try Git, and I never looked back since. Git is simply great. Extremly fast, distributed. It can also store SVN repository for offline work, and you can simply delete the .git directory once you get back online and merge the changes.

Anyway, all my code managed by git now. The best thing is that the 'main' repository has moved to 3rd hard disk so far - I just can't imagine doing that with SVN. It would be such PITA to do something like that without losing history.


Post a Comment

Links to this post:

Create a Link

<< Home