v3 of mh/ref-races. Thanks to Junio for the suggestion implemented in this version. Change since v2: * Change lock_packed_refs() to use its own struct lock_file rather than requiring the caller to supply its own. 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. Patch 12/12 is still optional--it avoids a little bit of work when rewriting the packed-refs file (including when deleting a reference that has a packed version), but relies on the stat-based freshness check not giving a false negative. Peff seems to lean slightly against merging the last patch and AFAIK nobody else has expressed an opinion. (Of course, if the test cannot be relied upon in the check before writing, then we should not forget that its failure in a check before reading can also cause problems, however rarely.) 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 | 5 +- builtin/ls-files.c | 12 +- cache.h | 60 ++++++++-- read-cache.c | 181 ++++++++++++++++++------------ refs.c | 319 ++++++++++++++++++++++++++++++++++++++++++++--------- refs.h | 26 ++++- 6 files changed, 469 insertions(+), 134 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