Skip to content
  • Jeff King's avatar
    ident: loosen getpwuid error in non-strict mode · 92bcbb9b
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    If the user has not specified an identity and we have to
    turn to getpwuid() to find the username or gecos field, we
    die immediately when getpwuid fails (e.g., because the user
    does not exist). This is OK for making a commit, where we
    have set IDENT_STRICT and would want to bail on bogus input.
    
    But for something like a reflog, where the ident is "best
    effort", it can be pain. For instance, even running "git
    clone" with a UID that is not in /etc/passwd will result in
    git barfing, just because we can't find an ident to put in
    the reflog.
    
    Instead of dying in xgetpwuid_self, we can instead return a
    fallback value, and set a "bogus" flag. For the username in
    an email, we already have a "default_email_is_bogus" flag.
    For the name field, we introduce (and check) a matching
    "default_name_is_bogus" flag. As a bonus, this means you now
    get the usual "tell me who you are" advice instead of just a
    "no such user" error.
    
    No tests, as this is dependent on configuration outside of
    git's control. However, I did confirm that it behaves
    sensibly when I delete myself from the local /etc/passwd
    (reflogs get written, and commits complain).
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    92bcbb9b