@@ -478,6 +478,20 @@ static void export_one(const char *var, const char *s, const char *e, int hack)
478
478
strbuf_release (& buf );
479
479
}
480
480
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
+
481
495
static void determine_author_info (struct strbuf * author_ident )
482
496
{
483
497
char * name , * email , * date ;
@@ -530,7 +544,8 @@ static void determine_author_info(struct strbuf *author_ident)
530
544
if (force_date )
531
545
date = force_date ;
532
546
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 )) {
534
549
export_one ("GIT_AUTHOR_NAME" , author .name_begin , author .name_end , 0 );
535
550
export_one ("GIT_AUTHOR_EMAIL" , author .mail_begin , author .mail_end , 0 );
536
551
export_one ("GIT_AUTHOR_DATE" , author .date_begin , author .tz_end , '@' );
0 commit comments