Skip to content
  • Joey Hess's avatar
    sha1_file: avoid bogus "file exists" error message · 65117abc
    Joey Hess authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    This avoids the following misleading error message:
    
    error: unable to create temporary sha1 filename ./objects/15: File exists
    
    mkstemp can fail for many reasons, one of which, ENOENT, can occur if
    the directory for the temp file doesn't exist. create_tmpfile tried to
    handle this case by always trying to mkdir the directory, even if it
    already existed. This caused errno to be clobbered, so one cannot tell
    why mkstemp really failed, and it truncated the buffer to just the
    directory name, resulting in the strange error message shown above.
    
    Note that in both occasions that I've seen this failure, it has not been
    due to a missing directory, or bad permissions, but some other, unknown
    mkstemp failure mode that did not occur when I ran git again. This code
    could perhaps be made more robust by retrying mkstemp, in case it was a
    transient failure.
    
    Signed-off-by: default avatarJoey Hess <joey@kitenet.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    65117abc