Why do we need this?

Why not just add an EmptyTreeIterator to the TreeWalk in slot 0 inside of EGit?  Then you are comparing the initial commit to the empty tree, and everything magically falls out as added?

Its what I do inside of Gerrit Code Review for initial commits.  And it means I don't have to muck around with special corner cases like this inside of JGit.