← Back to team overview

kicad-developers team mailing list archive

Re: Interesting article


Jonas Diemer wrote:
2008-12-15, 20:06:27 - Dick Hollenbeck:


I think svn branches would be sufficient for our needs (we don't have 100s of developers potentially creating branches).

I agree, but only partially. I use Mercurial -- there's an option called "hg clone", which grabs a complete copy of the VCS repository, including the entire change history. So I can clone the repository, take it with me, then do some work on it while I'm on the road, away from an Internet connection. Once I've made my changes, I commit them to my local copy, then either "push" them to the repository (if I have write access), or email them to the project maintainer as a patch-bundle.

This works, even to the point of being able to do something like this:
- Clone the repository, and check out TIP (=HEAD, #1239), which has a bug.
- Figure out that rev 1234 doesn't have the bug
- Run 'hg bisect 1234 1239'. Hg starts picking revisions using a successive-approximation method, and after a few test cycles you find that #1237 was the first rev with that bug.
- Run 'hg diff' to see what changed between #1236 and #1237
- Narrow down the bug and fix it in 1237
- Merge in the changes up to TIP (1239)
- Run 'hg diff' to check for any silly mistakes in the bugfix
- 'hg commit' to commit the change
- 'hg push' to push it into the remote server's repository

All this (except the first and last steps) can happen without any network access.

Truth be told, the offline access and bisect were the two reasons I switched from SVN to Hg, but I still use SVN (mainly tracking changes to KiCAD schematics and device firmware).