Haha! Nope, sorry, can't let a 110 lines function slide. Most of this should move onto `File`. If your function grows past 20 lines, it's probably time to ask some architectural questions :)

Unless you have performance concerns, let's replace `git.status` with your new statusFull, and track new/modified/renamed/deleted in the File model. The file model can generate its own one-line change-string, and then this whole monster function can be reduced to the initial snippet plus three one-line loops.