Dynamically adjusting packed_git_window_size
Internally we are using a custom build of Git, and one of the patches that I apply to newer builds of Git is one to adjust the DEFAULT_PACKED_GIT_WINDOW_SIZE in git-compat-util.h so Git won't trample all over our ulimit values on the 64-bit dev machines.
To do away with this, I've got these two (really one) set of patches to adjust the packed_git_window_size when setup_git_env() is called to a fraction of the "addressspace" limit (RLIMIT_AS). If the user's environment defines "ulimit -v" as "unlimited", this code will not take effect.
It's worth noting that this doesn't force Git to respect these limits, I'm still tracking down an issue hiding in get_revision() where I'm experiencing mmap(2) failures executing a `git log` command with restrictive ulimit settings (Linus, since you were so "pleased" with my last epic gdb fail, here's today's):
(gdb)
open_packed_git (p=0x71f2e0) at sha1_file.c:733
733 /* We leave these file descriptors open with sliding mmap;
(gdb)
735 */
(gdb)
741 return error("cannot set FD_CLOEXEC");
(gdb)
746 if (hdr.hdr_signature != htonl(PACK_SIGNATURE))
(gdb)Recursive internal problem. [1] 17381 abort GIT_PAGER= gdb git tyler@starfruit:~/source/git/main>
Oi vei.
Cheers, -R. Tyler Ballance