Subject: [PATCH] cg-mkpatch: Show human-readable dates

From: Jonas Fonseca <[email-masked]>
Date: Wed, 27 Apr 2005 01:27:29 +0200

Use the approach from from cg-log to show author and commit date
in a human-readable format.

Signed-off-by: Jonas Fonseca <[email-masked]>

---
commit e9f5d35741f92d64945a072759450b1c43b2b6e4
tree 01bda4c4ac0c3b938fb4e7954193f2441554acfb
parent e5eb91b0a47e1169006034af434312c7f38dc902
author Jonas Fonseca <[email-masked]> Wed, 27 Apr 2005 01:24:31 +0200
committer Jonas Fonseca <[email-masked]> Wed, 27 Apr 2005 01:24:31 +0200

 cg-mkpatch |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

Index: cg-mkpatch
===================================================================
--- bd580d135661ff0bc8eb32cb36025cd1e7bdda13/cg-mkpatch  (mode:100755 sha1:25c67a29296730daeac00e43fd4c18cf914a1c87)
+++ 01bda4c4ac0c3b938fb4e7954193f2441554acfb/cg-mkpatch  (mode:100755 sha1:efee5dc887677d3122d8630b9ee3ef396b7adbd3)
@@ -12,15 +12,31 @@
 showpatch () {
 	header=$(mktemp -t gitpatch.XXXXXX)
 	id=$1
-	cat-file commit $id | while read line; do
-		if [ ! "$line" ]; then
-			cat
-			echo
-			echo ---
-			echo commit $id
-			cat $header
-		fi
-		echo $line >>$header
+	cat-file commit $id | while read key rest; do
+		case "$key" in
+		"author"|"committer")
+			date=(${rest#*> })
+			sec=${date[0]}; tz=${date[1]}
+			dtz=${tz/+/}
+			lsec=$(expr $dtz / 100 \* 3600 + $dtz % 100 \* 60 + $sec)
+			pdate="$(date -Rud "1970-01-01 UTC + $lsec sec" 2>/dev/null)"
+			if [ "$pdate" ]; then
+				echo $key $rest | sed "s/>.*/> ${pdate/+0000/$tz}/" >> $header
+			else
+				echo $key $rest >> $header
+			fi
+			;;
+		"")
+			cat
+			echo
+			echo ---
+			echo commit $id
+			cat $header
+			;;
+		*)
+			echo $key $rest >>$header
+			;;
+		esac
 	done
 	echo
 	cg-diff -p -r $id > $header

-- 
Jonas Fonseca