I’ve been using Git to deploy my web site and I love it. I can create different branches for production, staging, and development. Although I have different developers working on the site simultaneously, there’s never a question of “How did that change get there?” because Git ensures that every change is documented. I even have off-site backup by default because my code is hosted at GitHub.
The problem is that my deploy script just stopped working. I was using a GitHub web hook to fetch changes automatically whenever a developer pushes new commits to GitHub. Here is the script:
header("Content-type: text/plain"); // be explicit to avoid accidental XSS
system("/home/jbacc7/bin/git fetch 2>&1");
It always produces the following error message now:
fatal: Out of memory? mmap failed: Cannot allocate memory
fatal: The remote end hung up unexpectedly
I find this odd because it works without error in the shell:
[buckeye]$ git fetch
and directly from PHP:
[code][buckeye]$ php GitHubSync.php
I compiled Git myself with NO_MMAP=1 to avoid memory problems by following the directions in the wiki.
I also see in the wiki that Git is not officially supported by DreamHost. Although I like DreamHost, this is important enough to me that if I can’t get it to work again I will consider switching to another hosting provider that supports Git. I can’t imagine going back to developing web sites without it.
Any ideas for how I can get this working?
I just tried “git gc” after using the settings in this post and now things seem to be working again. This is promising.