Looks neat! This reminds me heavily of the excellent Building Git by James Coglan[1].
From a cursory glance though, it doesn't seem to support reading packfiles. This was the big thing that prevented me from using a fully custom Git implementation when I wrote my git churn calculator[2]. For larger repositories, it seems that almost all files are stored in packfiles, rather than the conceptually simpler "loose" format.
For me, the most valuable resource was reading the Git / libgit2 source and reference documentation.