Re: Git is not scalable with too many refs/*
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:52:09
Martin Fick [off-list ref] writes:
I guess this makes sense, we invalidate the cache and have to rebuild it after every new ref is added? Perhaps a simple fix would be to move the invalidation right after all the refs are updated? Maybe write_ref_sha1 could take in a flag to tell it to not invalidate the cache so that during iterative updates it could be disabled and then run manually after the update?
It might make sense, on top of Julian's patch, to add a bit that says "the contents of this ref-array is current but the array is not sorted", and whenever somebody runs add_ref(), append it also to the ref-array (so that the contents do not have to be re-read from the filesystem) but flip the "unsorted" bit on. Then update look-up and iteration to sort the array when "unsorted" bit is on without re-reading the contents from the filesystem.