I am writing an application in Haskell that will have to perform basic operations on Git repositories (add, log, push, pull, fetch, diff etc.)
What are my options here (are there any apart from invoking shell commands from Haskell)? I could not find any good leads on Hackage.
There are many good libraries for interacting with Git available on Hackage:
You should be able to get started with these packages.