I've got a problem running certain git commands via Git.pm under
mod_perl. Specifically so far, these commands are "push" and "fetch"
(by way of "git pull"). Running the same command set without mod_perl
works as expected, including running these commands manually.
I won't bother to describe the application, but most web pages within
it will "git pull" and "git push" various bits of information once
they're entered. When I initially try this out, these commands work
fine, until a point in time when they stop and error with the
trace: built-in: git 'push'
trace: run_command: 'git-receive-pack '\''/var/repository'\'''
trace: exec: 'sh' '-c' 'git-receive-pack '\''/var/repository'\'''
trace: built-in: git 'receive-pack' '/var/repository'
fatal: read error: Bad file descriptor
fatal: write error: Broken pipe
Git command failure: push: command returned error: 128
Note that in the environment, I have enabled "GIT_TRACE=1", so that I
could at least make some sense of what's going on. When this happens
-- git will remain failing on this command until I restart Apache.
I said I am using Git.pm -- I am doing nothing fancy other than calling:
What do people think is happening? The fact that it's intermittent
would suggest to me there's either some global state running these
commands under mod_perl -- and perhaps the reason push returns error
128 with a broken pipe is that it's trying to write to a file handle
that's since closed (STDOUT or STDERR)? It's a little tricky knowing
where/how to diagnose this.
So any help/pointers would be greatly appreciated.
-- Thomas Adam