Skip to content
Dave Anderson edited this page Jul 27, 2013 · 17 revisions
  1. Distributed
  2. Reliable
  3. High-performance

How achieved

  • Reliable Because Hash of objects has built-in file corruption checks
  • High-performance Because Snapshot method
  • Distributed Because Repositories are cloned so that all branches and history are maintained

In CVS, when you merge, you plan ahead for a week and then you decide on a day for doing it.

By being distributed, you automatically get to be more trustworthy. I have a theory on backup systems: I don't do backups. I put my code up and everyone else mirrors it. If I crash my machine, I just request my code back.

Distributed Benefits

  • Freed from needing an always on server and connection
  • Freed from public branches name-spacing (not really a big issue with tfs)
  • each person has their own branch
  • obviates need for commit-access class of people and psychology of limited access
  • allows for a model of a network of trust (in competence)
  • pull in changes, rather than many people pushing them
  • good for maintenance: easy to work off old branches then merge back
  • faster because not going over the network

Architecture Benefits

  • speed because each file version is its own object (not calculated by diffs)

  • smaller repository size

  • Reliable because sha-1 hash is checked every time. You are certain there is no corruption.

  • The Linux community has a very cool network of trust model: Linus trusts a handful of lieutenants who specialize in specific areas; those lieutenants do the same within their own team.

  • Merging takes less than a second

  • Easy to Remerge

  • Multiple parents allows for better history and annotating

It [the network of trust] is not just easy to do technically, it is how everyone is wired up to work.

You don't have to have a metal model; it is how we are wired up.

Distribution means nobody is special.

Not having to go over the network is a huge performance saver.

It's the kind of performance that changes how you work: it no longer doing the same thing faster; it's allowing you to work in a completely different manner.

Doing it well is really complicated, but the basics are really simple.

moving out from a per file mentality to a group of files mentality

Clone this wiki locally