• J
    sha1_file: only freshen packs once per run · ee1c6c34
    Jeff King 提交于
    Since 33d4221c (write_sha1_file: freshen existing objects,
    2014-10-15), we update the mtime of existing objects that we
    would have written out (had they not existed). For the
    common case in which many objects are packed, we may update
    the mtime on a single packfile repeatedly. This can result
    in a noticeable performance problem if calling utime() is
    expensive (e.g., because your storage is on NFS).
    
    We can fix this by keeping a per-pack flag that lets us
    freshen only once per program invocation.
    
    An alternative would be to keep the packed_git.mtime flag up
    to date as we freshen, and freshen only once every N
    seconds. In practice, it's not worth the complexity. We are
    racing against prune expiration times here, which inherently
    must be set to accomodate reasonable program running times
    (because they really care about the time between an object
    being written and it becoming referenced, and the latter is
    typically the last step a program takes).
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    ee1c6c34
cache.h 57.7 KB