?

Log in

No account? Create an account
Today's annoyance is Mercurial. Mercurial is a distributed version… - 'Twas brillig, and the slithy toves did gyre and gimble in the wabe [entries|archive|friends|userinfo]
Thomas

[ website | Beware the Jabberwock... ]
[ deviantArt | the-boggyb ]
[ FanFiction | Torkell ]
[ Tumblr | torkellr ]

Links
[Random links| BBC news | Vulture Central | Slashdot | Dangerous Prototypes | LWN | Raspberry Pi]
[Fellow blogs| a Half Empty Glass | the Broken Cube | The Music Jungle | Please remove your feet | A letter from home]
[Other haunts| Un4seen Developments | Jazz 2 Online | EmuTalk.net | Feng's shui]

[Tuesday 7th December 2010 at 6:55 pm]
Thomas

boggyb
[Tags|]
[Feeling |annoyedannoyed]
[Playing |Breath of Life ~ Howard Shore/The Lord of the Rings - The Two Towers]

Today's annoyance is Mercurial. Mercurial is a distributed version control system which gives everyone their own copy of the repository. This sounds great, until you realise everyone needs their own copy of the entire repository.

I was working on a bugfix and wanted to grab some related code out of a repository, so I could pull it into a decent IDE rather than try and make sense of umpteen web browser tabs (a good IDE will let you follow references between files). Ok, since I only want a small part of it there's no need to grab the entire thing, right?

Wrong.

Unlike CVS or Subversion, it's all or nothing. You have to grab the entire repository even if you only want a single file. Even if you have no intention of making any changes.

Fine, tell TortoiseHg to clone the master repository, wait while it thinks about things... and then dies horribly applying changeset 51 of 800-odd. Because unlike CVS or Subversion, you really are copying the entire repository. Including the entire revision history. Which in this case turned out to be 150MB of files (presumably including several large binaries) and another 280MB of revision history!

On the one hand, files that large should probably not be blindly dumped in source control. But on the other hand, I wasn't even after any of those files! CVS, Subversion, or even Visual SourceSafe would have let me grab the latest version of just the files I wanted so that I could look through them and work out how this module fitted into where I was working on the bugfix.
Link | Previous Entry | Share | Next Entry[ Penny for your thoughts? ]