Notes on Mercurial

Notes from Mercurial Google Tech Talk

  • Youtube
  • Python (with ~5% C), fast, and distributed
  • Simple conceptual model:
    • Repository
      • Changelog
      • Manifest
      • File metadata
    • Working directory
    • Changeset
  • Not heavyweight - no DB, just files
  • 12K lines of python in ~2006
  • Power/performance is in abstractions
    • Avoidance of disk seeks
    • Linear I/O streams
    • Don't read/write more than you have to
    • Union of deltas
    • Deltas end up being from immediate linear formats
  • File formats
    • Binary - struct pack and unpack
    • Why read instead of stat?
  • Speed also lets you do things you couldn't otherwise do
    • Mercurial queues - push/pop patches

Other Notes

  • hgfront - web-based repo mgmt tool for mercurial - Django