Re-roll of mh/ref-races. Thanks to Peff, Junio, and Ramsay for reviewing v1. Changes since v1: * mh/reflife has graduated to master, so this patch series now applies directly to master. * Some trivial constness adjustments were necessary because of 21a6b9fa read-cache: mark cache_entry pointers const * Better explain (in comments and log message) patch 01/12. * In 04/12, access struct lock_file::fd directly instead of keeping a separate copy in struct packed_ref_cache. Please note that this patch series's usage of stat()/fstat() causes breakages under cygwin, pointed out by Ramsay Jones. He has graciously offered to work on this issue. The last patch is still optional--it avoids a little bit of work when rewriting the packed-refs file, but relies on the stat-based freshness check not giving a false negative. Jeff King (2): get_packed_ref_cache: reload packed-refs file when it changes for_each_ref: load all loose refs before packed refs Michael Haggerty (10): repack_without_ref(): split list curation and entry writing pack_refs(): split creation of packed refs and entry writing refs: wrap the packed refs cache in a level of indirection refs: implement simple transactions for the packed-refs file refs: manage lifetime of packed refs cache via reference counting do_for_each_entry(): increment the packed refs cache refcount packed_ref_cache: increment refcount when locked Extract a struct stat_data from cache_entry add a stat_validity struct refs: do not invalidate the packed-refs cache unnecessarily builtin/clone.c | 7 +- builtin/ls-files.c | 12 +- cache.h | 60 ++++++++-- read-cache.c | 181 ++++++++++++++++++------------ refs.c | 314 ++++++++++++++++++++++++++++++++++++++++++++--------- refs.h | 27 ++++- 6 files changed, 469 insertions(+), 132 deletions(-) -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html