Subject: [PATCH 1/3] cg-commit: Move author picking to cg-Xlib

From: Jonas Fonseca <[email-masked]>
Date: Tue, 7 Feb 2006 23:44:19 +0100

Adds pick_author utility function to cg-Xlib that uses the author line from
git-cat-file output to print a string that sets the GIT_AUTHOR_* env
variables. This string should then be eval'd by the caller.

Signed-off-by: Jonas Fonseca <[email-masked]>
---
commit 5095aca7013d87ccdb08dad20a9fb93d7465d33d
tree 9ec064a96718b937d373769c52d830b8c3a6daca
parent d3cabc9974357947eac035d613557d4318b85f9f
author Jonas Fonseca <[email-masked]> Tue, 07 Feb 2006 23:05:19 +0100
committer Jonas Fonseca <[email-masked]> Tue, 07 Feb 2006 23:05:19 +0100

 cg-Xlib   |   26 ++++++++++++++++++++++++++
 cg-commit |   28 +---------------------------
 2 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/cg-Xlib b/cg-Xlib
index 308d798..e17c82f 100644
--- a/cg-Xlib
+++ b/cg-Xlib
@@ -236,6 +236,32 @@ list_untracked_files()
 	git-ls-files -z --others $listdirs "${EXCLUDE[@]}"
 }
 
+pick_author()
+{
+	local pick_author_script='
+		/^author /{
+			s/'\''/'\''\\'\'\''/g
+			h
+			s/^author \([^<]*\) <[^>]*> .*$/\1/
+			s/'\''/'\''\'\'\''/g
+			s/.*/export GIT_AUTHOR_NAME='\''&'\''/p
+
+			g
+			s/^author [^<]* <\([^>]*\)> .*$/\1/
+			s/'\''/'\''\'\'\''/g
+			s/.*/export GIT_AUTHOR_EMAIL='\''&'\''/p
+
+			g
+			s/^author [^<]* <[^>]*> \(.*\)$/\1/
+			s/'\''/'\''\'\'\''/g
+			s/.*/export GIT_AUTHOR_DATE='\''&'\''/p
+
+			q
+		}
+	'
+	LANG=C LC_ALL=C sed -ne "$pick_author_script"
+}
+
 # Usage: showdate SECONDS TIMEZONE [FORMAT]
 # Display date nicely based on how GIT stores it.
 # Save the date to $_showdate
diff --git a/cg-commit b/cg-commit
index e5e98b4..06ab0c0 100755
--- a/cg-commit
+++ b/cg-commit
@@ -276,33 +276,7 @@ for msg in "${msgs[@]}"; do
 done
 
 if [ "$copy_commit" ]; then
-	pick_author_script='
-		/^author /{
-			s/'\''/'\''\\'\'\''/g
-			h
-			s/^author \([^<]*\) <[^>]*> .*$/\1/
-			s/'\''/'\''\'\'\''/g
-			s/.*/GIT_AUTHOR_NAME='\''&'\''/p
-
-			g
-			s/^author [^<]* <\([^>]*\)> .*$/\1/
-			s/'\''/'\''\'\'\''/g
-			s/.*/GIT_AUTHOR_EMAIL='\''&'\''/p
-
-			g
-			s/^author [^<]* <[^>]*> \(.*\)$/\1/
-			s/'\''/'\''\'\'\''/g
-			s/.*/GIT_AUTHOR_DATE='\''&'\''/p
-
-			q
-		}
-	'
-	set_author_env="$(git-cat-file commit "$copy_commit" |
-	                  LANG=C LC_ALL=C sed -ne "$pick_author_script")"
-	eval "$set_author_env"
-	export GIT_AUTHOR_NAME
-	export GIT_AUTHOR_EMAIL
-	export GIT_AUTHOR_DATE
+	eval "$(git-cat-file commit "$copy_commit" | pick_author)"
 	git-cat-file commit "$copy_commit" | sed -e '1,/^$/d'
         written=1
 fi >>"$LOGMSG"

-- 
Jonas Fonseca