• J
    add_to_alternates_file: don't add duplicate entries · 77b9b1d1
    Jeff King 提交于
    The add_to_alternates_file function blindly uses
    hold_lock_file_for_append to copy the existing contents, and
    then adds the new line to it. This has two minor problems:
    
      1. We might add duplicate entries, which are ugly and
         inefficient.
    
      2. We do not check that the file ends with a newline, in
         which case we would bogusly append to the final line.
         This is quite unlikely in practice, though, as we call
         this function only from git-clone, so presumably we are
         the only writers of the file (and we always add a
         newline).
    
    Instead of using hold_lock_file_for_append, let's copy the
    file line by line, which ensures all records are properly
    terminated. If we see an extra line, we can simply abort the
    update (there is no point in even copying the rest, as we
    know that it would be identical to the original).
    
    As a bonus, we also get rid of some calls to the
    static-buffer mkpath and git_path functions.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    77b9b1d1
sha1_file.c 90.3 KB