@@ -478,6 +478,20 @@ static void export_one(const char *var, const char *s, const char *e, int hack)
478478 strbuf_release (& buf );
479479}
480480
481+ static int sane_ident_split (struct ident_split * person )
482+ {
483+ if (!person -> name_begin || !person -> name_end ||
484+ person -> name_begin == person -> name_end )
485+ return 0 ; /* no human readable name */
486+ if (!person -> mail_begin || !person -> mail_end ||
487+ person -> mail_begin == person -> mail_end )
488+ return 0 ; /* no usable mail */
489+ if (!person -> date_begin || !person -> date_end ||
490+ !person -> tz_begin || !person -> tz_end )
491+ return 0 ;
492+ return 1 ;
493+ }
494+
481495static void determine_author_info (struct strbuf * author_ident )
482496{
483497 char * name , * email , * date ;
@@ -530,7 +544,8 @@ static void determine_author_info(struct strbuf *author_ident)
530544 if (force_date )
531545 date = force_date ;
532546 strbuf_addstr (author_ident , fmt_ident (name , email , date , IDENT_STRICT ));
533- if (!split_ident_line (& author , author_ident -> buf , author_ident -> len )) {
547+ if (!split_ident_line (& author , author_ident -> buf , author_ident -> len ) &&
548+ sane_ident_split (& author )) {
534549 export_one ("GIT_AUTHOR_NAME" , author .name_begin , author .name_end , 0 );
535550 export_one ("GIT_AUTHOR_EMAIL" , author .mail_begin , author .mail_end , 0 );
536551 export_one ("GIT_AUTHOR_DATE" , author .date_begin , author .tz_end , '@' );
0 commit comments