Add tool to render git's "<utcseconds> <zone>" into an RFC2822-compliant string, because I don't think date(1) can do it. Use same for 'git log' output.
Signed-off-by: David Woodhouse <[EMAIL PROTECTED]> --- Makefile +++ Makefile 2005-04-18 15:40:43.000000000 +1000 @@ -14,7 +14,7 @@ PROG= update-cache show-diff init-db write-tree read-tree commit-tree \ cat-file fsck-cache checkout-cache diff-tree rev-tree show-files \ - check-files ls-tree merge-base + check-files ls-tree merge-base show-date SCRIPT= parent-id tree-id git gitXnormid.sh gitadd.sh gitaddremote.sh \ gitcommit.sh gitdiff-do gitdiff.sh gitlog.sh gitls.sh gitlsobj.sh \ --- gitlog.sh +++ gitlog.sh 2005-04-18 15:39:38.000000000 +1000 @@ -13,6 +13,23 @@ rev-tree $base | sort -rn | while read time commit parents; do echo commit ${commit%:*}; - cat-file commit $commit + cat-file commit $commit | while read type rest ; do + case "$type" in + "author"|"committer") + DATESTAMP="`echo $rest | cut -f2 -d\>`" + RFC2822DATE="`show-date $DATESTAMP 2>/dev/null || echo $DATESTAMP`" + echo $type $rest | sed "s/$DATESTAMP\$/ $RFC2822DATE/" + ;; + + "") + echo "" + cat + ;; + *) + echo $type $rest + ;; + esac + done + echo -e "\n--------------------------" done --- show-date.c.orig 2005-04-18 15:43:06.000000000 +1000 +++ show-date.c 2005-04-18 15:42:15.000000000 +1000 @@ -0,0 +1,48 @@ +#include <time.h> +#include <stdio.h> +#include <stdlib.h> +#include "cache.h" + +static const char *month_names[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" +}; + +static const char *weekday_names[] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" +}; + +int main(int argc, char **argv) +{ + time_t t; + int offset; + char *p; + struct tm tm; + + if (argc != 3) + usage("usage: show-date <seconds> <zone>"); + + t = strtol(argv[1], &p, 0); + if (*p || !t) + usage("usage: show-date <seconds> <zone>"); + + if (argv[2][0] != '-' && argv[2][0] != '+') + usage("usage: show-date <seconds> <zone>"); + + offset = strtol(argv[2]+1, &p, 10); + if (*p || p!= argv[2]+5) + usage("usage: show-date <seconds> <zone>"); + + if (argv[2][0] == '-') + offset = -offset; + + offset = 60 * (offset % 100 + (offset / 100 * 60)); + + t += offset; + gmtime_r(&t, &tm); + + printf("%s, %d %s %04d %02d:%02d:%02d %s\n", + weekday_names[tm.tm_wday], tm.tm_mday, month_names[tm.tm_mon], + tm.tm_year+1900, tm.tm_hour, tm.tm_min, tm.tm_sec, argv[2]); + return 0; +} -- dwmw2 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html