If you read C well (and some Perl and bash too), adymitruk is right. Git is a good choice.
However, if you're comfortable with Python, read the Mercurial source. Many of WTF / min are going to come from your familiarity with the language and style that DVCS records. Git is written in C, Perl and the Bourne shell, Mercurial is Python (with a little C IIRC), and Bzr is written in Python, Pyrex, and C.
You will also want to consider what your tool of choice is. If you use Git, you will understand what each file implements. Similarly with Mercurial or Bzr.
Basically, when choosing which tool or language to use (or learn), a good axiom is this: go with what you know. You are trying to learn how to implement DVCS, and not how to use a specific system or language :)
Raffettler
source share