commit dee3d788b5980d09c1dac29e67844b3947488112 from: Sven M. Hallberg date: Thu Aug 01 16:27:44 2024 UTC got: show author date if different from committer date Shown as "orig:" in the output. Slightly adjusts a rebase regress test to the new output. commit - 7e6fcaa81371396b915c5382bb6f05175313bc8a commit + dee3d788b5980d09c1dac29e67844b3947488112 blob - a81121f951a231375922221fe3702b4f48c0d214 blob + 717a7c74d145e56db2a81a960f1739187059af09 --- got/got.c +++ got/got.c @@ -4117,7 +4117,7 @@ done: } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(const time_t *time, char *datebuf) { struct tm mytm, *tm; char *p, *s; @@ -4405,6 +4405,18 @@ printfile(FILE *f) return NULL; } +/* print a date line unless an error occurs (or fail silently) */ +static void +print_date(const char *prefix, const time_t *t) +{ + char datebuf[26]; + char *datestr; + + datestr = get_datestr(t, datebuf); + if (datestr) + printf("%s %s UTC\n", prefix, datestr); +} + static const struct got_error * print_commit(struct got_commit_object *commit, struct got_object_id *id, struct got_repository *repo, const char *path, @@ -4415,9 +4427,8 @@ print_commit(struct got_commit_object *commit, struct { const struct got_error *err = NULL; FILE *f = NULL; - char *id_str, *datestr, *logmsg0, *logmsg, *line; - char datebuf[26]; - time_t committer_time; + char *id_str, *logmsg0, *logmsg, *line; + time_t author_time, committer_time; const char *author, *committer; char *refs_str = NULL; @@ -4447,15 +4458,20 @@ print_commit(struct got_commit_object *commit, struct id_str = NULL; free(refs_str); refs_str = NULL; - printf("from: %s\n", got_object_commit_get_author(commit)); + + /* author and committer data */ author = got_object_commit_get_author(commit); + author_time = got_object_commit_get_author_time(commit); committer = got_object_commit_get_committer(commit); + committer_time = got_object_commit_get_committer_time(commit); + printf("from: %s\n", author); + if (author_time != committer_time) + print_date("orig:", &author_time); if (strcmp(author, committer) != 0) printf("via: %s\n", committer); - committer_time = got_object_commit_get_committer_time(commit); - datestr = get_datestr(&committer_time, datebuf); - if (datestr) - printf("date: %s UTC\n", datestr); + print_date("date:", &committer_time); + + /* parent commits */ if (got_object_commit_get_nparents(commit) > 1) { const struct got_object_id_queue *parent_ids; struct got_object_qid *qid; blob - c824aaf0100a26fa4d112f62f5136272c5c82bbc blob + aa8c37ce5f9af6c3b3fdf320c95dd8316334d667 --- regress/cmdline/rebase.sh +++ regress/cmdline/rebase.sh @@ -952,8 +952,8 @@ test_rebase_preserves_logmsg() { echo "modified alpha on branch" > $testroot/repo/alpha git_commit $testroot/repo -m "modified alpha on newbranch" - (cd $testroot/repo && got log -c newbranch -l2 | grep -v ^date: \ - > $testroot/log.expected) + (cd $testroot/repo && got log -c newbranch -l2 | \ + egrep -v '^(date|orig):' > $testroot/log.expected) local orig_commit1=`git_show_parent_commit $testroot/repo` local orig_commit2=`git_show_head $testroot/repo` @@ -986,8 +986,8 @@ test_rebase_preserves_logmsg() { return 1 fi - (cd $testroot/wt && got log -c newbranch -l2 | grep -v ^date: \ - > $testroot/log) + (cd $testroot/wt && got log -c newbranch -l2 | \ + egrep -v '^(date|orig):' > $testroot/log) ed -s $testroot/log.expected <<-EOF ,s/$orig_commit1/$new_commit1/ ,s/$orig_commit2/$new_commit2/