It seems a little weird to me to define this as a method on `GTSubmodule` instead of on `GTIndex`. Adding anything else to the index uses a method on `GTIndex` and this is ostensibly something you're doing to modify the index, not the submodule.

I see that the libgit2 function is a submodule function. Is there any other reason we should implement this here?