diff options
author | Uwe Kleine-König <ukleinek@strlen.de> | 2010-09-24 16:24:53 +0200 |
---|---|---|
committer | Uwe Kleine-König <ukleinek@strlen.de> | 2010-09-24 16:24:53 +0200 |
commit | 539e437eaf86f1c9f6327b1c38d761c5f198f114 (patch) | |
tree | c0f7aa100d4fd70a84852d397a03515d3c7f7922 /uglib.sh | |
parent | 0ed430e6cba20908c98c0f199d79e0ab5f85d0da (diff) | |
download | ubergit-539e437eaf86f1c9f6327b1c38d761c5f198f114.tar.gz ubergit-539e437eaf86f1c9f6327b1c38d761c5f198f114.tar.xz |
properly implement authorinfo and committerinfo
authorinfo still lacks parsing .ubergit/author
Signed-off-by: Uwe Kleine-König <ukleinek@strlen.de>
Diffstat (limited to 'uglib.sh')
-rw-r--r-- | uglib.sh | 37 |
1 files changed, 29 insertions, 8 deletions
@@ -1,10 +1,8 @@ ## authorinfo ## {{{2 authorinfo() { # XXX: implement parsing .ubergit/author - # more XXX: get author from $1 - echo "GIT_AUTHOR_NAME='Uwe Kleine-König'" - echo "GIT_AUTHER_EMAIL='ukl@pengutronix.de'" - echo "GIT_AUTHER_DATE='1283281597 +0200'" + + personfromcommit "$1" "author" "AUTHOR" } ## assert ## {{{2 @@ -32,10 +30,7 @@ commitenv() { committerinfo() { assert is_topic "$1" - # XXX: get commiter from $1 - echo "GIT_COMMITTER_NAME='Uwe Kleine-König'" - echo "GIT_COMMITTER_EMAIL='ukl@pengutronix.de'" - echo "GIT_COMMITTER_DATE='1283281597 +0200'" + personfromcommit "$1" "committer" "COMMITTER" } ## debug ## {{{2 @@ -143,6 +138,32 @@ msg() { git cat-file blob "$1:.ubergit/msg" } +## personfromcommit ## {{{2 +# personfromcommit <commitish> [author|committer] [AUTHOR|COMMITTER] +personfromcommit() { + # inspired by git's get_author_ident_from_commit + local encoding script + + encoding="$(git config i18n.commitencoding || echo UTF-8)" + script=" + /^$2 /{ + s/'/'\\\\''/g # quote single quotes + h + s/^$2 \\([^<]*\\) <[^>]*> .*$/GIT_$3_NAME='\\1'/p + + g + s/^$2 [^<]* <\\([^>]*\\)> .*$/GIT_$3_EMAIL='\\1'/p + + g + s/^$2 [^<]* <[^>]*> \\(.*\\)$/GIT_$3_DATE='\\1'/p + + q + } + /^\$/q + " + git show -s --pretty=raw --encoding="$encoding" "$1" -- | sed -n -e "$script" +} + ## pretty_tree ## {{{2 pretty_tree() { git ls-tree --full-tree "$1" \ |