You know, I had not been working on the library for very long when I added the `GIT_DIFF_IGNORE_SUBMODULES` flag. It was before I had worked on the submodule implementation and it was just a flag that I anticipated wanting from reading the docs on diff. That then propagated over to status, as I recall, when I rewrote status to be based on diff, but again, it was before submodule support was actually even implemented.

Looking back, I wonder if this flag is actually a misreading of the docs for `git diff` and `git status` by me. Both of those have an option to *ignore submodule changes* which is a different thing altogether from ignoring submodules. It really means that we should just always consider submodules up-to-date, as opposed to excluding them from the list completely.

I think this function, as you have implemented it, does what it should do given the current flags, but I'm wondering if the need for something like this actually goes back to my lack of understanding of how submodules would integrate with diff and status, and misreading the documentation at the time. Do you think we should change it / change the meaning of the flags?