Все реализации (и реализации частей, обертки частей, интерфейсы частей) для Git должны иметь возможность общаться друг с другом, будь то C git, JGit (на Java), Grit (на Ruby), Git-Sharp / Git # (в C #) или Dulwich (в Python), независимо от того, какая реализация используется на сервере и какая реализация используется на клиенте. То же самое верно (возможно, в меньшей степени) с различными реализациями, работающими в одном и том же хранилище.
Если это не так, это ошибка в реализации Git (исходная версия в C является эталонной реализацией).