If i create a file like:
import os
print os.getlogin()
and run it with cron, I get an exception
print os.getlogin()
OSError: [E
From the os.getlogin() docs: "Returns the user logged in to the controlling terminal of the process." Your script does not have a controlling terminal when run from cron. The docs go on to suggest: "For most purposes, it is more useful to use the environment variable LOGNAME to find out who the user is, or pwd.getpwuid(os.getuid())[0] to get the login name of the currently effective user id."
Since you don't want to modify GitPython, you could write a script that does this:
import os, pwd
os.getlogin = lambda: pwd.getpwuid(os.getuid())[0]
import git
# do whatever you need to do with GitPython here
I would suggest filing a bug (or better yet, submitting a patch) with GitPython, though.