The tag header is parsed with a while loop and read command. I'm not entirely sure how portable it is, as it had to use the following unusual heredoc format: while read field value do # .. done <<< "$(some command)" This was necessary because piping the output to a while doesn't work because the pipe is run in a separate process and hence setting variables inside it has no effect in the main script process. This "<<<" heredoc notation works around that problem, but I have no idea how widely supported it is. The alternative (should it be necessary) is to wastefully make multiple "git-cat-file | sed" calls - yuck. This patch also updates the user/time extraction from the "tagger" field to use the variable $tagger, rather than the "git-cat-file | sed" call used previously. Signed-off-by: Andy Parkins <andyparkins@xxxxxxxxx> --- templates/hooks--update | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-) diff --git a/templates/hooks--update b/templates/hooks--update index 31e72ca..fd4c081 100644 --- a/templates/hooks--update +++ b/templates/hooks--update @@ -215,15 +215,33 @@ case "$refname_type" in echo " from $oldrev" fi + # Read the tag header + while read field value + do + case "$field" in + object) + tagobject="$value" + ;; + type) + tagtype="$value" + ;; + tag) + # Confirm that this tag has the right name? Nah + ;; + tagger) + tagger="$value" + ;; + esac + done <<< "$(git cat-file tag $newrev | head -q -n 4)" + # If this tag succeeds another, then show which tag it replaces prevtag=$(git describe --abbrev=0 $newrev^ 2>/dev/null) if [ -n "$prevtag" ]; then echo " replaces $prevtag" fi - # Read the tag details - eval $(git cat-file tag $newrev | \ - sed -n '4s/tagger \([^>]*>\)[^0-9]*\([0-9]*\).*/tagger="\1" ts="\2"/p') + # Extract user and time from tagger variable + eval $(sed -n 's/\([^>]*>\)[^0-9]*\([0-9]*\).*/tagger="\1" ts="\2"/p' <<< "$tagger") tagged=$(date --date="1970-01-01 00:00:00 +0000 $ts seconds" +"$DATEFORMAT") echo " tagged by $tagger" -- 1.5.0.3.402.g0c48 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html